QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 12319|回复: 14
打印 上一主题 下一主题

老大,怎麼寫并行口呢?用到哪些API函數阿

[复制链接]
字体大小: 正常 放大
kenneth        

10

主题

1

听众

98

积分

升级  97.89%

该用户从未签到

新人进步奖

跳转到指定楼层
1#
发表于 2004-6-1 14:39 |只看该作者 |倒序浏览
|招呼Ta 关注Ta

原來都寫串口的,現在要我寫并行口還有USB口

: {# @2 O$ F3 H% }

我暈,看來這回死定了

# G& k3 D# w+ B, V3 f

我連并口用到哪些API函數都不知道

3 a" c2 u2 \" ?8 H) g8 m

老大救命哦

[em06]
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
本人方年22,学识渊博,英俊潇洒,七岁学文,九岁习武,每外出行走,常引美女回头,帅哥跳楼!
kenneth        

10

主题

1

听众

98

积分

升级  97.89%

该用户从未签到

新人进步奖

回复

使用道具 举报

ilikenba 实名认证       

1万

主题

49

听众

2万

积分

  • TA的每日心情
    奋斗
    2024-6-23 05:14
  • 签到天数: 1043 天

    [LV.10]以坛为家III

    社区QQ达人 新人进步奖 优秀斑竹奖 发帖功臣

    群组万里江山

    群组sas讨论小组

    群组长盛证券理财有限公司

    群组C 语言讨论组

    群组Matlab讨论组

    API之打印函数: % t: j3 D/ B+ `9 M( w0 `8 @8 TAbortDoc 取消一份文档的打印 1 l+ H, Z9 \, G' W% x AbortPrinter 删除与一台打印机关联在一起的缓冲文件 ! N5 i9 [/ r7 c! V _5 v6 V" Z AddForm 为打印机的表单列表添加一个新表单 ! d" _' F* S# h& BAddJob 用于获取一个有效的路径名,以便用它为作业创建一个后台打印文件。它也会为作业分配一个作业编号 . J# q( j& |7 m2 F1 i0 YAddMonitor 为系统添加一个打印机监视器 9 e/ L7 a+ q8 K+ x7 U3 I5 T; eAddPort 启动“添加端口”对话框,允许用户在系统可用端口列表中加入一个新端口 ! L0 q& N, s5 x1 b/ Z) gAddPrinter 在系统中添加一台新打印机 7 v/ w/ e& E! EAddPrinterConnection 连接指定的打印机 $ |! k' b# H/ x$ \& G8 ]/ }AddPrinterDriver 为指定的系统添加一个打印驱动程序 3 O( x: J8 R8 r( i9 ^* {2 [ AddPrintProcessor 为指定的系统添加一个打印处理器 4 d7 a2 E) n( t; lAddPrintProvidor 为系统添加一个打印供应商 0 i' C. u' X' h+ s6 K: E AdvancedDocumentProperties 启动打印机文档设置对话框 , l+ Q6 s3 X! H R; g8 R ClosePrinter 关闭一个打开的打印机对象 - ?% x5 k! _$ Z; n" W- X" Q7 f- Q ConfigurePort 针对指定的端口,启动一个端口配置对话框 4 U+ v; l4 B4 N* c ConnectToPrinterDlg 启动连接打印机对话框,用它同访问网络的打印机连接 5 G9 }: S0 c. r DeleteForm 从打印机可用表单列表中删除一个表单 4 G+ p( h% e1 d8 v q DeleteMonitor 删除指定的打印监视器 * o. W" R% c1 ^% X. |' q DeletePort 启动“删除端口”对话框,允许用户从当前系统删除一个端口 ) R. I6 a7 [! U/ xDeletePrinter 将指定的打印机标志为从系统中删除 2 ^+ L% K) G8 f: t g! ?' t" l0 N DeletePrinterConnection 删除与指定打印机的连接 ; Y2 z* t$ |+ z5 VDeletePrinterDriver 从系统删除一个打印机驱动程序 6 Q& y% _1 ]9 `4 }9 h DeletePrintProcessor 从指定系统删除一个打印处理器 5 T0 f0 T# \ e0 {' r- p- KDeletePrintProvidor 从系统中删除一个打印供应商 ' d/ i7 Z2 \7 m( ]" v DeviceCapabilities 利用这个函数可获得与一个设备的能力有关的信息 2 E' d( e( b: i' j DocumentProperties 打印机配置控制函数 0 C; c# O; c5 h; Y5 a7 H' n EndDocAPI 结束一个成功的打印作业 9 e" v% b C4 g EndDocPrinter 在后台打印程序的级别指定一个文档的结束 4 g: L0 s& X$ Z+ E3 G/ [7 i7 oEndPage 用这个函数完成一个页面的打印,并准备设备场景,以便打印下一个页 & i# s V: T* B. M Z& c" ?EndPagePrinter 指定一个页在打印作业中的结尾 @* S) S: y/ G1 V EnumForms 枚举一台打印机可用的表单 Z# d: i" Q0 C' b5 B" U( s( R EnumJobs 枚举打印队列中的作业 0 V6 i$ V+ _$ w8 aEnumMonitors 枚举可用的打印监视器 1 c! r+ Z+ M- ?) @% Z6 BEnumPorts 枚举一个系统可用的端口 4 Q5 U. O, c- t9 O2 [ EnumPrinterDrivers 枚举指定系统中已安装的打印机驱动程序 4 c5 M; y; d% X) A7 ^EnumPrinters 枚举系统中安装的打印机 % t& t' D& s! F8 j6 BEnumPrintProcessorDatatypes 枚举由一个打印处理器支持的数据类型 " O9 t. e! F# M, x0 zEnumPrintProcessors 枚举系统中可用的打印处理器 ) A/ y, a5 w' u$ V; GEscape 设备控制函数 3 t) a- _ O( R9 A. FFindClosePrinterChangeNotification 关闭用FindFirstPrinterChangeNotification函数获取的一个打印机通告对象 ' a, d) l# w1 F' A5 L C FindFirstPrinterChangeNotification 创建一个新的改变通告对象,以便我们注意打印机状态的各种变化 4 E% A/ z h7 S' CFindNextPrinterChangeNotification 用这个函数判断触发一次打印机改变通告信号的原因 ! I" U* W0 D8 L# ~FreePrinterNotifyInfo 释放由FindNextPrinterChangeNotification函数分配的一个缓冲区 ( |9 ?/ G: Z) J1 ~9 k! XGetForm 取得与指定表单有关的信息 , `! i0 J6 p7 Z3 k GetJob 获取与指定作业有关的信息 5 F) T7 ]2 U* t6 o0 kGetPrinter 取得与指定打印机有关的信息 * T2 k+ z1 u0 L4 r8 s# e3 gGetPrinterData 为打印机设置注册表配置信息 : K: @; G N- ?% T# a5 F, ZGetPrinterDriver 针对指定的打印机,获取与打印机驱动程序有关的信息 0 K% z: y6 N/ b/ e/ z9 dGetPrinterDriverDirectory 判断指定系统中包含了打印机驱动程序的目录是什么 5 ]- r" I: `; c5 O5 [4 @4 Z GetPrintProcessorDirectory 判断指定系统中包含了打印机处理器驱动程序及文件的目录 $ B4 m& o. |7 f" u8 {: V/ [ OpenPrinter 打开指定的打印机,并获取打印机的句柄 + {! S% [. M; |8 ?5 E) j PrinterMessageBox 在拥有指定打印作业的系统上显示一个打印机出错消息框 " h' I4 p6 m* S9 S3 H2 R PrinterProperties 启动打印机属性对话框,以便对打印机进行配置 # {! v; z/ T! u7 Q ReadPrinter 从打印机读入数据 3 I; ^; i% J) e: Q% j* B ResetDC 重设一个设备场景 * ^! e# C$ T sResetPrinter 改变指定打印机的默认数据类型及文档设置 6 \) s4 i. F5 g( L3 ?9 KScheduleJob 提交一个要打印的作业 - w5 u U/ {% ~% a* ^SetAbortProc 为Windows指定取消函数的地址 m' o2 l5 v: R SetForm 为指定的表单设置信息 " J0 `# q) O$ X2 b# SSetJob 对一个打印作业的状态进行控制 9 X r% {: @# \4 e$ iSetPrinter 对一台打印机的状态进行控制 & H9 `. `+ \' g SetPrinterData 设置打印机的注册表配置信息 5 C5 F0 C1 M7 S8 ? C4 [) @ StartDoc 开始一个打印作业 5 c9 ?4 @* t8 w+ ~ StartDocPrinter 在后台打印的级别启动一个新文档 ! N- P! S# r' W5 FStartPage 打印一个新页前要先调用这个函数 / M. \! e& F5 e0 G( J4 ] d StartPagePrinter 在打印作业中指定一个新页的开始 # f6 t I# e( ` A WritePrinter 将发送目录中的数据写入打印机 . I9 W, |& ?$ Y- \" X$ f

    回复

    使用道具 举报

    ilikenba 实名认证       

    1万

    主题

    49

    听众

    2万

    积分

  • TA的每日心情
    奋斗
    2024-6-23 05:14
  • 签到天数: 1043 天

    [LV.10]以坛为家III

    社区QQ达人 新人进步奖 优秀斑竹奖 发帖功臣

    群组万里江山

    群组sas讨论小组

    群组长盛证券理财有限公司

    群组C 语言讨论组

    群组Matlab讨论组

    看到这样一个usb通讯的帖子,可能对你有用!

    主  题: 关于usb通讯方面的问题。请AKing大哥及相关高手来看看,万分感激!!! l/ g( e& e% e作  者: aiyu33 () , k! r' F2 F5 C# y7 }% }: r 等  级: ! e4 N( q5 O" y+ s5 ?- a信 誉 值: 100 - r; x: V D* k% }4 W 所属论坛: C++ Builder Windows SDK/API 0 T, l4 M7 X$ p9 n* o0 O" e* T 问题点数: 100 - s5 ]2 [) N6 h) x6 B回复次数: 12 . `$ c3 j8 {5 O. B8 W 发表时间: 2003-12-16 20:43:13 / M9 I1 y. }! M& X9 a9 G - q, \( J& Q% X6 C0 R % o8 |1 n4 b. E, V" d

    最今我接到了开发pc和pocket pc通过usb口通讯的任务。这两个星期我参考了很多方面的资料,特别是AKing大哥写的一些文章。但我始终没有打通这个关口,我贴出我的代码请AKing大哥看看,现在很急,多谢。 3 ] Z* ?$ s% Opc的os是windows2000professional 4 O0 F0 n6 b: F" Z. p) npocket pc是hp ipaq 2210,os 是pocket pc2003。! C- {; A& _3 A7 ^+ K8 j 我装了activesync3.7。我查看过了,这个activesync目录下有pocket pc的驱动程序。pc也能识别。 % U: ^( c, v& {/ l: R5 j5 q% S下面是我在pc上调用usb的代码。) N3 o' M! ]4 q/ N- @' z( D# x 下面的代码我能打开hidn类型的usb,但是就是不能打开pocket pc的usb。+ }: R) ]5 E6 p( [, z& H0 ^ //classGuid = {25dbce51-6c8f-4a72-8a6d-b54c2b4fc835} * J+ r( f& x5 u }& ~& KDEFINE_GUID(GUID_CLASS_PALM, 1 k! W. X( r4 f w$ T8 g$ x 0x25dbce51, 0x6c8f, 0x4a72, 0x8a, 0x6d, 0xb5, 0x4c, 0x2b, + {1 d: l' c. N$ Q& W 0x4f, 0xc8, 0x35);( c: W1 G! E l3 x* t% `$ ? n8 G0 B4 [ GUID HidGuid = GUID_CLASS_PALM; : ]2 v4 M* U* S4 j. z3 h* mHANDLE Get_DeviceHandle( GUID* pGuid)( B4 K8 w& d( i7 q" T {0 p4 Q* W s6 w# Q" g& A ( C, S1 S x+ W% m! q, a HDEVINFO info = SetupDiGetClassDevs(pGuid, NULL, NULL, DIGCF_PRESENT | DIGCF_INTERFACEDEVICE);8 [# [) F7 I2 F! n2 q 0 e, c, Z5 q, [, ` if(info==INVALID_HANDLE_VALUE)* y$ b# Z6 F, z( Q { ; \$ p- w9 b+ \9 i printf("No HDEVINFO available for this GUID\n"); 5 m8 h# J4 H1 y; k) D return NULL;9 a) b- d3 T4 q [ } . ]( B+ B, N: c/ I SP_INTERFACE_DEVICE_DATA ifdata;3 \, c4 b( x2 Z @& g ifdata.cbSize = sizeof(ifdata);" W4 s4 Y5 I3 X5 A/ } //0000是我在注册表中找到的序号+ F: {, y; E8 ]3 m8 } if(!SetupDiEnumDeviceInterfaces(info, NULL, pGuid, 0000, &ifdata))- U( s/ h1 z* e$ Y2 D, ] { 1 }1 ]* k9 q$ s- g! f printf("No SP_INTERFACE_DEVICE_DATA available for this GUID instance %d \n", instance+1);2 q9 }8 B& p, S s$ x SetupDiDestroyDeviceInfoList(info);: v# N/ |) e" m. d6 |2 R% ` return NULL;6 O' Z! `3 O4 ~6 I* O/ c- _7 I5 o }

    // Get size of symbolic link name3 A% f3 Z, [# b DWORD ReqLen;1 w5 [) S3 Y& Z5 ` 8 f% N6 S ~) P3 E6 j6 k9 M SetupDiGetDeviceInterfaceDetail(info, &ifdata, NULL, 0, &ReqLen, NULL); Q# F% C- g3 n' ]2 p * p3 p3 W p4 X PSP_INTERFACE_DEVICE_DETAIL_DATA ifDetail = (PSP_INTERFACE_DEVICE_DETAIL_DATA)(new char[ReqLen]); ) A; a' f! q1 I% B- u : [" f5 G6 x1 c0 n8 z if( ifDetail==NULL) 4 S$ k) m ^ k5 G0 T4 d# P {( c9 D0 P( g# L SetupDiDestroyDeviceInfoList(info);7 Y1 q g1 I" p9 x/ t$ a" ? return NULL; 7 o1 u' L! n: H, O }

    // Get symbolic link name. R" Z% k/ w2 _( n5 G: M ifDetail->cbSize = sizeof(SP_INTERFACE_DEVICE_DETAIL_DATA);- X! b) [, |+ B$ w: ]: i, y% b5 H$ ] " S* V' |4 m( u3 M if( !SetupDiGetDeviceInterfaceDetail(info, &ifdata, ifDetail, ReqLen, NULL, NULL)) - B! a, z* ~, N, B! d! V9 H+ O { ^5 J/ R! s; }6 e SetupDiDestroyDeviceInfoList(info);' U7 G+ D, h, {" N8 q delete ifDetail;' t( `- V* i+ b" W' e" _* n# r return NULL; , N$ M3 N! C/ B2 q3 m( Q5 j }

    printf("Symbolic link is %s\n",ifDetail->DevicePath);& K6 Z* X, W, Q4 R

    /*\\?\\usb#vid_03f0&pid_1016#5&1bc41f6c&0&1#{25DBCE51-6C8F-4A72-8A6D-B54C2B4FC835}这是ifDetail->DevicePath的内容*/ 3 c! [* h* u6 B. {8 u8 D# O( G // Open file6 a5 e, \# J5 D2 [- L4 e0 t //前面都很正常但就是下面始终得出一个无效的句柄,我也就无法开展下一步的工作./ @& _) \# D5 d2 i! O$ a* O! g HANDLE pDevice = CreateFile( ' w0 t7 n4 {' Q; Y. I ifDetail->DevicePath, ; ]! F- s; V9 ]$ j3 @ GENERIC_READ | GENERIC_WRITE, + A; p& `* a4 u; ?# [ FILE_SHARE_READ | FILE_SHARE_WRITE,! d! |9 m5 _9 n- u( @8 G* F( Z NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);- [1 _: f* |+ [- a" D 4 x0 P. W, l: h% V; t+ {* N1 v if( pDevice==INVALID_HANDLE_VALUE) pDevice = NULL;# R% {! F* o7 Y SetupDiDestroyDeviceInfoList(info);0 A% [/ ?3 N+ x& F/ }( p3 U9 @ 8 J! G/ k) K1 @* }* [4 P& R return pDevice;0 h o$ Z& [' D7 y- ]! r; L } $ d' ]0 p2 v/ \再次感谢关注这个问题的人们。

    % I& G% C# {. |- l! O, M4 P, S d. z" k/ F2 w/ s+ M8 ^ 4 u& [$ T3 K/ v4 h/ X, o 回复人: constantine(飘遥的安吉儿) ( ) 信誉:101 2003-12-16 21:23:57 得分:0 ( y8 x5 k4 {& h7 O: @% a& @$ e! Z ) v7 E. S5 e! m; i7 b & `/ w7 Z8 I7 W4 a! T9 Y+ V 7 I$ N% w. I0 a6 Gstudy

    # K0 i4 y' A" Q' n& \/ A, [ + K& B' G1 c4 t9 d. NTop ; d, P1 m* `# ]3 z+ n" |. z + f, {$ h @) j0 \ 回复人: wenyongjie(一个想成为大鸟的小菜鸟) ( ) 信誉:95 2003-12-16 22:28:46 得分:0 % Y9 g# }& o, K$ b5 a6 R ( \) m: @1 g+ g% y& r. V* d' A " k$ [) ~ A. y6 C# b0 ~, U % R/ M+ N( w2 Z& w只有学习的份

    8 [8 `( N6 \7 B 4 B) l" ~1 j3 l: @8 {. s8 [ Top 9 s% d/ l# R! X* l' `' { 6 c/ m1 V( {$ v8 z2 R% l+ \8 m 回复人: HUANG_JH(保卫钓鱼岛) ( ) 信誉:115 2003-12-17 9:50:41 得分:10 0 `. I8 t# A* z1 C' h% ~ 3 D7 `2 T: I4 \ 6 e% X& J( H/ k5 e X3 @ " b8 g C+ u2 x D, l- V 不知道有没有用!

    /////////////////////////////////////////////////////////////// . R6 ~% t9 ?3 O s* }3 m" W// HW9911 evaluation board software Rev. 1.0 ' Z+ |# a/ d$ \4 @// program by Liu Ding, Bei Jing HEAD Elec.1 f# G; q/ _/ o; T // this is the main program for the HW9911 USB device evaluation board . f' T- C% A" I4 `% E3 ^// it illustrate the basical read/write process of HW9911; Y0 N* _5 ^/ V6 H4 A // by three examples: , A) Q) w- ^8 P3 q// 1. write datas to ram on the evaluation board! T& M5 L. n$ w7 P( D5 H // 2. read the datas from the ram on the board - D5 R1 J. t; ~' W0 P// 3. send datas through RS-232 serial prot on the board5 y. O# P$ Z- S6 D4 E // ; s/ y+ \! p1 {; e1 J4 ?- s7 W) Z // the whole project are build with MSVC 6.0 & C7 C5 N4 U. z5 |% _$ ^ I// and tested on windows 98 platform. 6 j, K/ n; X1 {% y" L$ F) z//' u, x9 `2 B( b9 p1 d s // notes: you can use hyper terminal to reaceive datas form RS232 port: i1 b% \; u: Z1 F9 t( P, D2 l- N7 \! p // ; j2 k9 D: T# w2 m// this software are designed by Liu Ding $ f' O3 [# j: j* v4 I+ a// if you meet any problems, pls contact by email: ! ]- q, q& W6 r; v' w// hugehard@263.net! f1 g7 W+ [) [ // or contact HEAD Co. by Tel 86-10-87312497/ p2 ]2 F2 m6 }7 }6 ]6 n // or by fax: 86-10-873124958 G" V4 r* z* v ///////////////////////////////////////////////////////////////

    #include "hwdll.h" % u" `$ M/ Z2 e- z$ s' U9 w#include "stdafx.h" 3 x3 C4 _; E6 S5 \8 r#include <stdio.h>6 k. o( U7 j8 {! T x9 @6 K+ ` #include <windows.h> $ t3 @3 u5 V* n0 f: `#include <memory.h> . V$ n! g& W" C% a4 b. G# G#include <DEVIOCTL.H> ( ^" C3 b; E# o# F$ e1 s+ G0 i#include <stdlib.h> 4 h# S% Q; `. L$ @#include <conio.h> 6 ^: v* [+ { A+ J/ v: S#include "hw9911.h"( l M! k! R, I1 B #include "test9911.h"

    ( W/ R7 p) k2 ~* H/ ~: Vint main() ; v4 s& X8 g- `0 W% r{& J: t5 D$ W) `9 H: q8 r# e7 K' T int hOpen=FALSE; * H1 b ?( E& q f) L' D- O B$ P int hCommandLength=32;7 t* r2 \3 h# ?& _* N% r# e/ [ int hDataLength=64; 6 f) Z$ M0 O$ R+ x; y6 P4 f int i,VertAddr=0,HorAddr=0; 4 C n0 {9 Z7 a2 ~, `4 m' M int addr,TotalLen; % V* u9 _0 P( ^8 \' `% U USC StAddrH=0,StAddrL=0;( y2 g1 f. x* N# e6 @5 _( A USC DataLenH,DataLenL;1 P. D! K+ U( Q USC *hDataBuffer,*hCommandBuffer; : g0 W7 o1 O( N- D USC ch1=0x61;3 p* \/ g* R4 K$ x HANDLE hDeviceHandle;- K. L/ {) H' B- n$ F 5 t5 e$ U' D% B7 W2 } printf("************************************************\n"); / M9 }# S- @4 }+ C printf("*******HW9911 USB DEVELOPMENT BOARD*************\n"); z* Z' Q1 B% r printf("************************************************\n\n");! K0 k v& q$ X, Z8 M6 g printf("now press any key to open board\n");' k9 D. u3 s7 s1 c+ v4 k4 v, o+ b getch();

    /********* call hDeviceOpen in hwdll.dll to open the board***/% n& U9 g) n3 G7 @+ t9 ~4 Q //hOpenDevice 说明:: V" W r. u |6 O+ a: Y7 X$ N6 k // BOOL hOpenDevice(HANDLE *DeviceHandle) # m; F& S2 B, j/ R; I// 作用:打开设备; O& G, }3 D7 \) G3 M% j // 参数说明:7 X& B9 ?7 e6 A: B1 @# H1 k // DeviceHandle:设备句柄$ h9 N# M- b9 `* L // 返回值: 3 i6 g( X7 a7 Z" N7 h// 设备打开成功返回 TRUE,失败则返回FALSE 8 @) a. N! }( H if( (hOpen = hOpenDevice( &hDeviceHandle ))==FALSE)# U# K. E7 W! v2 p& m- ^3 A# i {( ~3 U* X2 A# h3 v printf("can't open device\n"); ; k! w* k3 F7 g' d4 N/ o printf("press any key to exit\n"); / g. B R( D& F# f8 [8 W% [ getch();# M& a7 X: i: c1 B1 O+ s$ v return 0; * ~6 W4 v ]: d# T } ! b. M8 q) \0 ]& p$ Y5 J! p4 N( F else ( Y) g; e. R4 O) A# V printf("\nCongratulations! device opened!\n\n");

    /****** build and send command **********/( e- ^+ Z, g: [4 \: A printf("how many bytes do you want to access?");! k3 `/ Q6 h3 F+ |8 B' V! B7 P scanf("%x",&TotalLen); ) N Z, y7 w# L' n while(TotalLen > 0x7fff): v5 Q$ V' p* Z! Q8 i$ p1 e {3 K9 l/ R6 Y5 b" ?1 L printf("pls input a hex data less than 08000\n");* Z/ U' M- S O3 f9 w1 K) r scanf("%x",&TotalLen);, `1 U4 T! c& I) d3 ^+ W5 j } : p" K: D5 }, i O, I DataLenH=(USC)(TotalLen/0x100); //data length high bytes4 Y. v$ O5 W: H! ^ C DataLenL=(USC)(TotalLen%0x100); //data length low bytes

    printf("************************************************\n"); : x6 V0 X' }5 s/ x printf("now program will write datas to ram on board\n");! v4 C4 ?2 R( b5 ~" h0 H printf("total bytes of datas is %x\n",TotalLen);3 A' @+ S0 \3 |7 g( X, L' j printf("press any key to continue\n\n"); : y; L2 Z8 K$ M4 R- g r( J" R getch();" |" B* L! y( |7 W' y/ w /***************************************************************** # I: a1 [9 B" a" j' B% Q+ D now will build a write command packet + X u a8 k& Y$ {( k: n with the first byte is 'w'. + e. ^1 J& a) @2 t% x ^; J u9 P and the following bytes are: 0 S; W! k" k: p4 H start ram address byte high, start ram address byte low,2 t6 V) F: C7 {# c datalength byte high, data length byte low.5 y* ~; \2 G' z8 \( X) D, u this packet will send to device through WritePipe1,9 Z: p( R4 B% T( ?3 G7 `% f which is endpoint 2 of HW9911. 8 S, l: A) X- x* m# T }9 S when the device receive this command packet, . T/ g, c7 v- P% P- r: ` it will write TotalLen bytes data to Ram on the board4 e' F, I& a' ?0 d; C ******************************************************************/

    7 K9 A9 _6 m& G, p7 i% ^ hCommandBuffer=(USC *)malloc(hCommandLength);$ @2 z) v/ G, V% w# N7 R" v: k# t hDataBuffer=(USC *)malloc(hDataLength); K. C' h8 {( F hCommandBuffer[0] = 'w'; //read command , G5 M1 }5 \, Y hCommandBuffer[1] = StAddrH; * [& ?% K* y1 Q hCommandBuffer[2] = StAddrL; 8 {+ y5 T' u6 S9 J) b) N! f8 z A hCommandBuffer[3] = DataLenH;, A- m8 V1 R9 M$ k7 @ hCommandBuffer[4] = DataLenL;

    /* call hUSBIO() in hwdll.dll to send command packet to device*/6 B& z: m3 e, D( U& S% L3 {' M: O // hUSBIO 说明: 7 |* Y' u' Y5 ]. ~/ M) U2 W// BOOL hOpenDevice(HANDLE *DeviceHandle,1 h+ s3 N% P9 w" E6 i+ } // unsigned char *IOBuffer,2 M4 v U; W5 s# | // int BufferLength,& z% i( X4 r. Y3 e // int PipeNumber,8 t# e4 v6 a2 l1 A) ` // int Action)' E% W( f7 l! m6 R2 Q0 E" \ // 作用:设备读写+ {* k- g- `% R // 参数说明: ! {& j" Q* r7 ~9 J- B+ m// DeviceHandle:设备句柄/ w3 o0 K* c* S$ ~1 N6 X // IOBuffer: 指向要传送的数据指针 ( k1 M- J( _9 D* j' u// BufferLength: 数据包长度 ( b5 Z& {. B! ^! x/ z1 X* T$ `// 对于发送缓存1、2和接收缓存1、2,BufferLength必须小于或等于32* M' f* s0 H$ X6 v, q* K7 y, _( O4 H& } // 对于发送缓存3和接收缓存3,BufferLength必须小于或等于64 b8 D4 ^3 A+ f. r7 x// PipeNumber: 通道号4 T2 ^) V# i" E6 {" n // 发送缓存1:PipeNumber=0; 4 O' ^; u# C1 _( j( B// 接收缓存1:PipeNumber=1; # _7 Q) w( w. }// 发送缓存3:PipeNumber=2;/ d6 [7 W) m! L& g // 接收缓存3:PipeNumber=3; ! `4 y' \ Q% t. a# ?// Action: 读写标志。TRUE代表从设备读数据到主机* W* C5 q1 P* _ // FALSE代表从主机发送数据到设备 ! G& h' S' x0 i// 操作接收缓存,Action必须为FALSE 6 t5 C9 G' j1 d! s// 操作发送缓存,Action必须为TRUE- Q! Y" [" x" i // 返回值:! ^( O' q5 G+ u; G8 B6 R' H. q0 x // 操作成功返回TRUE,失败返回FALSE

    if ( hUSBIO( &hDeviceHandle, ; O+ v4 z0 f7 _* q4 i hCommandBuffer,# ^8 {" j, T P1 X hCommandLength, $ c' E& f& W+ v# g hWritePipe1,& r5 z! w* L( N* k5 c9 o FALSE) == TRUE)2 G6 F- I8 }9 q0 c2 y {& K. [( b! @$ T) e$ O printf("command 'w' writed to board\n"); ( H0 _ a6 ?& w4 {3 [2 E" M printf("now press any key to write datas to ram\n"); ' a5 u6 e3 P7 m' T: X' s# J+ c getch(); I5 R, m' e5 k6 o" v }% M+ p! L3 j3 z else( z7 `4 @ D% H* s, I9 P printf("data can't write to device\n");

    /******** write ram data to board **********/

    printf(" ");3 @7 ]$ z9 k x+ s. O3 a, J2 I for(VertAddr=0;VertAddr<=0xf;VertAddr++)# x! H; y+ [0 Y printf("%02x ",VertAddr); / C+ V' N9 H, d- } printf("\n"); 4 U9 _# D" O; b# N/ E) Y1 E3 i3 K addr=0;3 N4 N9 K6 B7 ^" y while (addr<TotalLen) T; ~ \ W# N2 [ {: D* {: K; \8 o6 C; {( ?1 T- \2 `$ Q if (addr+hDataLength > TotalLen)5 I+ A0 }8 k( c0 d& V0 q) h hDataLength = TotalLen-addr; / S! D, E4 ]0 ~8 E for(i=0;i<hDataLength;i++) . q+ T3 K0 k, z4 G) }! W { / T+ I0 L& Z7 x- O( f. U hDataBuffer=ch1++;0 N; ^3 L4 j" R0 A' P if (ch1 > 0x80) 8 O) Q7 C" K& J8 F" C& @ ch1 = 0x61; ! i' E" x0 V4 l2 U } 5 P- A E3 a+ e: ~* ?& e) U/* call hUSBIO to write datas to write pipe3, which # N" z* m/ r7 ~$ e$ Y" N4 k is endoint 6 of HW9911*/

    if ( hUSBIO( &hDeviceHandle,6 o& ~0 z5 x. `& X, |. \3 q hDataBuffer,+ ?/ |+ \ d+ G3 F hDataLength,! J/ ~9 ]' b- L8 U hWritePipe3, * Y) Q8 ]' {, y4 p FALSE) == TRUE) //FALSE means Write operate : f6 b4 ^/ b2 W+ v; }6 o+ E {) D( A/ q1 L# _, z- w for(i=0;i<hDataLength;i++)2 `1 f: h U1 b7 {/ U8 \/ O { 4 d" |9 |% N5 z: {. Q7 |/* print format control */ " V2 W% R" @% \) y6 s4 l if(i % 16 == 0) * q* i$ P) ?9 }& s7 e7 e2 B$ I { j7 i4 g& U( C$ v0 U printf("\n%04x ",HorAddr); 3 n: w3 F/ z" [. F9 t$ p: ]% T1 a HorAddr=HorAddr+16; . J" f( Y- x+ X, e }* r. n# z# O! r; N% y" g6 ^, g$ J8 k E printf("%02x ",(USC)hDataBuffer);8 ^/ P% i( [. R. ^& i }2 A- E+ J1 @3 b: ^) Y6 X* B8 ^ addr=addr+hDataLength; - Z6 I* b- f) N$ G( V: O6 P }. A x8 ^& w. r3 a8 N2 v% R else$ Q% d; w+ \ i; _6 L+ g, W$ M' Y9 k7 s {. c4 p! ?: j' @ printf("can't write to board\n"); ! U7 \! ]4 M" o exit(0); 3 _: p' x7 Z7 G# P } & k0 g: V- q4 S( ^$ i } ( X; w6 @( L! @; _9 ] printf("\n\nTotal%x bytes write to ram OK\n\n",TotalLen);

    1 T8 J7 T. d: K Z6 J9 y! A3 R , @+ H- ~+ J0 \8 y7 t' zTop - h5 Q$ h3 p5 p* |4 F7 F 5 Z7 I+ [: u6 Y; W S 回复人: HUANG_JH(保卫钓鱼岛) ( ) 信誉:115 2003-12-17 9:50:51 得分:0 3 t r% c1 U- G* ~ % W- a2 ~ j# H0 m 2 c: d `3 t3 I* c; u" f4 `

    /*****************************************************************( e2 j3 ?8 e+ ~/ h now will build a read command packet k3 g$ j- N, L6 m- h7 V with the first byte is 'R'. % l& B# X5 {3 A" H5 X and the following bytes are: , M' H# X# w' d/ L start ram address byte high, start ram address byte low, / Y! P0 e( r8 U datalength byte high, data length byte low. 0 b) X& ]/ ? _4 u& e1 W this packet will send to device through WritePipe1,; e" A7 {4 r0 p. |! i. [% b2 q9 s which is endpoint 2 of HW9911.! R# h( Z6 h( ^4 J% g V7 @% B5 p$ G when the device receive this command packet, ; p9 W4 e: F8 w$ r; Z it will read TotalLen bytes data from Ram on the board , j2 C6 k& C5 C( Q******************************************************************/

    printf("************************************************\n"); 3 R% ~2 D% v J% d" r8 d) E printf("now program will read datas from ram on board\n"); ( o$ l9 |* O; D7 D( ?. d5 ^5 c printf("total bytes of datas is %x\n",TotalLen);( q! ?: b* ^, [3 b& }3 O2 y printf("press any key to continue\n\n"); ; R# T. L8 F' Y5 f getch(); / m; z6 s/ L" [- q8 X hDataLength=64;) _- Q! e6 x2 f4 n8 X# M' w4 ^ hCommandBuffer[0] = 'r'; //read command ' T( {/ I# d! p hCommandBuffer[1] = StAddrH; 2 u$ l5 z( A/ E w0 { hCommandBuffer[2] = StAddrL; 2 c6 X' E- @- D hCommandBuffer[3] = DataLenH; : \# z3 V' b" C hCommandBuffer[4] = DataLenL; ) J* G d" V0 n /* call hUSBIO to send packet */: O$ k. h* K- S; L# l3 X if ( hUSBIO( &hDeviceHandle,0 J5 ^2 N2 V" D) P' y+ q hCommandBuffer, 0 E" f5 r- D7 x+ h0 Y hCommandLength,! k/ V4 [+ E8 u, W! R hWritePipe1,( B$ a6 b6 R7 S; G FALSE) == TRUE) 4 X: [3 \. ^: @# Z3 A' W {9 T6 t2 K) H" y- k/ J! n6 \0 X printf("command 'r' writed to board\n"); # L& v. J% V8 ]* { printf("now press any key to read datas from ram\n\n");" E) d+ J$ m7 M$ L8 s6 f getch(); ) g& x" ~6 }% I, d# _) _+ [5 ^ }* x* w: O- q$ T6 T6 j% z1 A else9 ?: Y6 P9 G, q# L; r% N printf("data can't write to device\n");

    /******** read ram data form board **********/9 ^& }2 ^" Y y {9 V printf(" ");6 w: {. o, ] t# B for(VertAddr=0;VertAddr<=0xf;VertAddr++)) N5 t1 v' r1 v3 v% g- k& O printf("%02x ",VertAddr); " D2 v4 @5 B% o: W! J printf("\n"); " I: V1 ~) a( }( A4 J: k+ g addr=0;; q! w) p; ~" p7 s& p( t* m HorAddr=0;# k- o! l6 X T; P) Q5 Q: c; [, y0 v" J2 n while (addr<TotalLen) & v: j5 X+ _; @. \# W9 z { # P7 i' |5 w$ ]! m1 {: c( P0 N! n2 u if (addr+hDataLength > TotalLen) : D9 [& S* x9 {$ s5 q hDataLength = TotalLen-addr; + }. d }6 n' V4 b6 H4 {& L5 _+ f4 A/* call hUSBIO to read datas from board */; ]6 k' V) l( T/ v# X if ( hUSBIO( &hDeviceHandle, 4 h7 T9 t2 z* f6 D6 p hDataBuffer,# K$ ^. D/ r$ {7 H! M hDataLength,* J9 P" F' x6 ?5 Z0 Y+ a5 v1 Q hReadPipe3, % ~* ~1 k/ {( b& u3 `' Y TRUE) == TRUE) //TRUE means Read Operate- N- |7 c% e( t5 x { $ [- E3 @4 k) f0 n- W for(i=0;i<hDataLength;i++): b' P7 @8 F8 G: O Y. b2 L {+ H r' F" ?, @$ E8 V5 L, W' b /* print format control */8 K6 P9 e2 a2 i( M+ ? if(i % 16 == 0) ( I! c, u7 F" t( S J( b u {, e$ d% B' b# H! q- P printf("\n%04x ",HorAddr); 1 @- c+ i2 ^- ~0 ^0 ?9 D/ w HorAddr=HorAddr+16; B0 ~2 s% p' I, C7 @4 ]/ a' c } & { b* f0 L+ |- r5 U3 `/ { printf("%02x ",(USC)hDataBuffer);) u* U+ w+ S3 t# ^' o' Z } * A9 R4 `5 b" U9 n z' z, [% O- `1 i! ^ addr=addr+hDataLength;5 G. [0 ` Y) }! b' P1 Q2 u } 6 x& [: a) j/ _# z else% l9 C9 V& a, ]# E% ] { , H' q2 S$ Y6 R" |, N2 W' @ printf("can't read from board\n"); " k; K/ l/ i1 Y exit(0);* l* P( _, e4 _1 t- J }* L/ n) @. C1 f } " T( y+ W, y2 [. v3 b5 | printf("\n\n"); 8 {$ h2 i6 c- y. k0 c printf("%x bytes read from ram OK\n\n",TotalLen);

    /*****************************************************/& _. R- s, v- |+ U* I6 A& c /* process rs232 test */ 3 A, w$ N: T( @( q7 D7 Q$ K- C* D/* the first byte in this packet is command 's' */ R" l6 P+ z/ H; Y /* and the following 2 bytes are used to set */ 8 k) k1 K) L' }, u! r- K8 u/* the baud rate of 8051 */ , B# B6 Q0 B& Y. @/* they will be write to TH1 and TL1 respectively*/ . _) ]# T6 }4 b" f: u, v* T7 n/* the following bytes are datas will be */ " y' U! r; F& ~( U& k4 q/* send through RS232 serial poart */3 d' g$ j% B$ R! X /*****************************************************/+ \7 D" Z; e6 t5 F r | printf("\npress any key to process RS232 Test\n"); ; ]+ u2 x/ o" X# w+ r getch(); : R$ e# f/ \- Z7 {. j- ]% J , g4 F5 d- K- E* u I* B# D USC TH1,TL1; U2 N) \! g: }, O) u" D. o char hStr[30];! c' j$ C% k3 [6 v3 R TH1=(USC)(BD9600/0x100); 2 r8 i( M9 }! _+ @ TL1=(USC)(BD9600%0x100); - e( Z: o4 M$ A hCommandBuffer[0] = 's'; //read command' |+ {% Y% _( ] b. d hCommandBuffer[1] = TH1; * ?4 l9 l ]1 d* @! C hCommandBuffer[2] = TL1; //start address is 0x0000

    strcpy(hStr, "Hi, dear HW9911 consumers! "); , {1 N3 v+ e# n# b t( k0 O; I printf("Hi, dear HW9911 consumers! ");! }; C% E+ |" B8 [6 ]. F8 f0 z2 Q memcpy(&(hCommandBuffer[3]),hStr,27);

    if ( hUSBIO( &hDeviceHandle,! p! n b) N" K$ p. Q% P hCommandBuffer, p0 M( k( U8 b! k1 i) ~2 ` 30, / [, e4 c( {' e! ~+ ] hWritePipe1,2 o" [, P0 x! j1 h0 H7 C. ? FALSE) == FALSE)0 n4 i2 P. g/ ?6 T% Y9 h { * y( M0 z! f: {4 \" H printf("can't write datas to RS232\n");6 X% o5 k& ?$ m2 E( W& v exit(0); % j2 F# i8 R& @: y }

    strcpy(hStr, "I'm HW9911 Evaluation Board, "); 6 l& Y' R8 G0 z* a! V0 x printf("I'm HW9911 Evaluation Board, "); 1 v9 P( L/ \& Y" X memcpy(&(hCommandBuffer[3]),hStr,29); * o+ B5 }; Z7 I* L- ?' Q & \; v; T1 }' O! m: a+ ?# ` if ( hUSBIO( &hDeviceHandle," }! g2 M0 {- \5 a) O( x hCommandBuffer,, e; w7 x. K3 e( N 32,8 Q3 b9 V8 ^# E$ e. h1 I3 F hWritePipe1,, i, Y, m( c0 `2 r) m8 g$ _ i6 @ FALSE) == FALSE)3 [+ L1 T7 A; ^# T { $ |- v( n! ]8 ] printf("can't write datas to RS232\n");3 b8 d4 w4 X1 F2 S- E( I3 ? exit(0);' Q/ p" g+ U, M" \# G, p) n# j }

    strcpy(hStr, "thanks for purchasing me, ");" i/ [. N6 Y/ g& \ printf("thanks for purchasing me, ");. j$ e% l" U( q6 H9 z8 w# i memcpy(&(hCommandBuffer[3]),hStr,26); 3 C, }1 [& c- {. | 6 J, f3 y2 K5 O6 F4 p* _, X if ( hUSBIO( &hDeviceHandle,0 O$ F8 v2 c' |# [6 ~" n0 _+ D( M% t hCommandBuffer,& ?/ V" q1 E" s& J- C 29, " C D3 V. Z6 G7 Z$ M hWritePipe1, + D6 d- F" B. H" Y' H6 X FALSE) == FALSE) 5 U. m$ e9 j$ q {3 j$ s3 [1 ~/ z4 m- Z; C, b printf("can't write datas to RS232\n");' Z( Q. \2 V5 [% \ exit(0); # w% q( R6 A/ u {! M% H }/ j' v3 L9 p! ]: m& J * {! R4 p8 j o7 I# |3 x% w0 L strcpy(hStr, "If you meet some problems, "); " r5 {& }3 j4 ^, p+ g printf(hStr, "If you meet some problems, "); C# J, D7 I+ F' ?4 T) m- N memcpy(&(hCommandBuffer[3]),hStr,27);2 y+ _8 c/ {9 h 1 w1 j" |1 `& @9 P if ( hUSBIO( &hDeviceHandle,7 B9 a8 |. t1 w hCommandBuffer, # C' l4 r) X9 ]6 K% Y. M2 m. g( t 30, / M! j2 h* S# e8 v' {( [ hWritePipe1,9 T' |7 r. k+ M" Q3 F1 J FALSE) == FALSE) - u6 V) w+ {7 i& U- o2 d { : v0 @2 ?: L2 Y% K" k6 p printf("can't write datas to RS232\n");9 A- p/ c ^7 ?/ |4 W9 [ exit(0);3 z r! q- D$ g3 {0 e* m' H6 D) X& L }

    strcpy(hStr, "pls contact my designer "); 4 I! K: J F) q* L1 h printf("pls contact my designer "); - f4 f. O( ~9 l; t/ v' j4 I' ? memcpy(&(hCommandBuffer[3]),hStr,24); 7 s% q% a0 p9 A x1 l: c9 |7 } 8 U& F6 Z6 r5 g; @& ]( j if ( hUSBIO( &hDeviceHandle,& R* c1 R" l. G6 R- Z hCommandBuffer,% z5 h, r5 I. | J; c 27,! s2 z7 f6 r8 \" r4 J. C hWritePipe1,1 K# z5 F- m9 \$ A FALSE) == FALSE); B5 h$ O, x+ f m9 W2 C! K {9 f: `5 l7 V. @ printf("can't write datas to RS232\n"); |" N& g! k1 d( Q. @5 R' h exit(0); 5 k+ ^# N, U& L+ u# V% \- l- r: S' e }

    strcpy(hStr, "by email: hugehard@263.net.");0 t) M7 a; e5 _2 w Y$ B. M5 x' r printf("by email: hugehard@263.net.\n"); 3 y4 a8 p i2 r& E, w# Z memcpy(&(hCommandBuffer[3]),hStr,27); e1 b- U- f; F2 N0 X : Y; a# z1 O v# h% K4 ` if ( hUSBIO( &hDeviceHandle, ; w% v( Y6 R9 T d hCommandBuffer,) J, O2 N; s& Y6 k 30,. I2 L- y0 }) G: c' ~! F" u8 J: ^# o# D hWritePipe1, ; Y! K8 m1 g8 p; p% E% m FALSE) == FALSE) 2 L. ]5 u) {7 l) s4 ^ {. y6 a, m, }: r z7 n# W& W printf("can't write datas to RS232\n"); 3 ~0 O% T7 \" m: S8 e+ ? exit(0); " a+ O& {( @. H }0 C3 ?. Y) t! z, {! ^4 H/ E /********* call hDeviceOpen in hwdll.dll to open the board***/ ; E/ Z: J1 {: g7 l1 i// hCloseDevice 说明:6 }; C4 {( j; e8 \% X // BOOL hCloseDevice(HANDLE *DeviceHandle) # }% A: d( }. M// 作用:关闭设备 : ~& H5 {8 K) D8 F// 参数说明:! ?* O) `' R# |9 ^% h // DeviceHandle:设备句柄* g* F* n) C3 @: N* O* ] // 返回值:- ~& [! D- h3 c5 ^2 [2 i // 设备关闭成功返回 TRUE,失败则返回FALSE . y5 G1 U% h2 c3 g if( (hOpen = hCloseDevice( &hDeviceHandle ))==FALSE) 5 y( P. @1 I4 H _3 m7 O7 r { 7 T* {/ R; V6 K6 [" {/ ~$ G* _! A, O printf("can't open device\n");" P) D3 f* `6 f& m1 M8 I7 V! _& Y printf("press any key to exit\n");) L2 y6 V: U* P P; U- x getch();& G; w* V A9 \6 I, g return 0; . G2 w8 {2 j) P4 q6 X# Z. E }7 V" A, n5 p* P( H" \0 K else : Y) b1 X$ e2 N- U printf("device closed\n");

    printf("press any key to exit the program\n");& R+ S; n5 B4 l+ ~# E0 v) E4 y free(hDataBuffer); / o& K: U- g: a9 ~ free(hCommandBuffer);4 D& p' g! M p2 H) X0 T getch(); K ]8 O) R8 [4 i* [7 U5 ^. H! K return 0; / v3 _# N* y& N- d6 i) B}

    % g! B8 A F2 y6 |6 f. ? ?0 V% C* w! z2 Q . W& m3 r9 _! N" r. c2 XTop % l( m# h$ e+ K# O6 D/ }* Q3 k( K; k9 e & S$ [7 z8 U+ y3 p s. f! n( P" G 回复人: aiyu33() ( ) 信誉:100 2003-12-17 11:41:24 得分:0 % D3 r( ]# k. C; e. P* I 0 K. C7 ^* G' |( X 2 Z/ _) T$ N3 w/ e & A [/ b" V) x. r1 oupupupupupupup

    9 Y$ U: r' b* N! x `8 j7 M4 t2 \ 1 M1 E0 x% l F; CTop & E/ t- D3 j/ X" K) a+ C7 L" t1 Y : N O2 o7 I. ?! c( D' o 回复人: kingcaiyao(AKing) ( ) 信誉:110 2003-12-17 12:53:39 得分:0 ; D l% B! ~6 A2 S& C 1 j) ^! V8 s- v3 E$ x% H " p$ A2 T& n9 l6 U; H ; P( x2 u. P5 T/ W' n0 u你开发的这种软件类似于Palm Desktop Software,负责Pocket与PC之间通讯,我建议你最好先写一个驱动,将USB口虚拟成一个串口,然后直接对串口操作会很方便的。我现在做的程序可能和你相似是一个CDMA模块,通过USB口与PC机连接,然后由驱动程序将它虚拟成一个串口,我的工作就是和这个虚拟的串口通讯。

    , \1 M5 D w; ?- w I & t7 r) k s* Y1 R Top - A& r% H* P) |# B- p " z6 f' u8 o* I: L _( i4 h 回复人: kingcaiyao(AKing) ( ) 信誉:110 2003-12-17 12:56:27 得分:0 1 D' D6 I8 R6 `1 K7 A1 J / S! i" x% f l* s9 { p9 k& l7 C& A& O! c' x - G! q* B" V! k K; [8 EPocket与PC连接肯定有驱动的,如果驱动程序没有将Pocket虚拟成一个串口,你也可以直接通过设备GUID和设备序列号进行访问,详情你参见我专栏上的一篇文章。当然了,通过虚拟串口来访问设备肯定要方便,简单些。

    7 |" O. `4 _5 s8 V& p) H) |5 s - z& q1 A& }1 u# u o! x! a" g Top 7 D! I& J3 H1 _* i! f/ l2 M ( D8 f0 T& T9 I& Z6 s& y' W( u2 I 回复人: aiyu33() ( ) 信誉:100 2003-12-17 13:31:08 得分:0 0 P1 D0 }1 o" b* V , g, A! f5 D2 i8 R3 [% f G7 {- k - l4 {# u% z$ z9 b A+ b. Q6 i# W 我得这款pocketpc默认只支持使用usb与pc相连的,而且activesync3.7就是使用usb传输数据的。如果我自己写驱动的话,不仅不熟悉而且很可能activesync3.7这个软件就使用不了。我只需要利用它的驱动。你的专栏上的那篇文章我也看了,我就是模仿你的写的代码,但就是到createfile这步就不行了,我的同事是用palm开发类似的程序,也是到这步就行不通了,是不是有其他的原因? $ X% y' r, g& @我还想问问如果驱动程序将pocket虚拟成串口,如何查看它的符号名呢?

    / D9 \8 K2 p8 K * u4 ]" K3 M2 d* q8 y. U0 _! F $ H: H% g5 T% Z# Q) @. F+ i Top 1 e" W* w3 h4 B: J5 o 6 a! k! l+ E+ s h 回复人: kingcaiyao(AKing) ( ) 信誉:110 2003-12-17 16:53:17 得分:0 - k5 c; r+ v+ P4 E: I- [8 ^ # B- O. d9 ]; d5 O( V * s+ c, B9 K' a. h( K* M& ]. j 4 U# x) \7 z5 W* Q假如将一个USB设备虚拟成串口的话,那么它的符号名可能是COM3,COM4,或COMn,这根据你当前PC机的配置而定 。它的符号名位于注册表中HKEY_LOCAL_MACHINE\CurrentControlSet中,你可以搜索注册表,另外在2000或以上的操作系统中,你可以到HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SerialComm中看到。

    % @% E6 M5 E! I* J5 t# h# S0 z& J 3 S+ V/ c& G: }& q7 s; r& H Top 8 v6 [0 n, s; M" h4 X+ d. I- f v) u% }, P: a8 [ 回复人: kingcaiyao(AKing) ( ) 信誉:110 2003-12-17 16:55:33 得分:0 + t1 y' x- O+ h' R% v/ U8 x: b7 K0 m7 P 2 ^7 G/ Z5 u7 ] . p( h, u; z+ S; K q3 F ! X7 h, c5 |3 n4 Q/ r6 j- M我以前在一张贴子中详细回答了如何利用设备序列号和设备GUID来访问该设备,你可以搜索一下CSDN。你所说的CreateFile不能打通设备,你要查一下,你的符号名是否正确,包括设备序列号和设备GUID是否正确,设备GUID你可以从驱动程序的安装向导文件.inf中找到,设备序列号则需要你到注册表中去找。

    ! q! s. [' C1 v3 j0 |6 o3 I+ e. \1 I 6 L6 X9 L7 {8 Q8 B7 o0 ]) \: HTop ; M& c' X& x! r' e" f 6 a! K: x2 a) y* m; e; J7 P) ^1 r 回复人: gyj_china(透明) ( ) 信誉:98 2003-12-17 18:15:30 得分:90 ' B5 {- T6 u" L 7 {, w' e7 }% Q/ ~+ O7 a( k + f. W$ k; Q3 U4 c7 H, f : M5 O4 f3 r6 m4 ^2 }: K! e* J8 A 没有星星不敢发言:(

    6 f# a4 ]# F& g' f" c 1 T, z0 }* @3 A9 M; e* y Top & U- T$ C. G& ^ # [$ U$ h* l. G0 O3 }6 G 回复人: aiyu33() ( ) 信誉:100 2003-12-19 18:27:28 得分:0 % p8 D& c' u6 T( Q ) Y7 M' a. [! p0 E4 \1 w5 p5 [ % @$ ]) J& y' b: Y- Z+ ] $ R3 y" E5 o: T, I p% |& k4 x5 u不好意思,是因为ActiveSync3.7一直在系统服务程序中运行,占用了驱动程序,所以不能打开设备。我删除了ActiveSync3.7后就可以了。

    回复

    使用道具 举报

    kenneth        

    10

    主题

    1

    听众

    98

    积分

    升级  97.89%

    该用户从未签到

    新人进步奖

    回复

    使用道具 举报

    10

    主题

    3

    听众

    33

    积分

    升级  29.47%

    该用户从未签到

    回复

    使用道具 举报

    arvinlai        

    5

    主题

    2

    听众

    65

    积分

    升级  63.16%

  • TA的每日心情
    难过
    2011-11-20 22:41
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    群组Matlab讨论组

    回复

    使用道具 举报

    arvinlai        

    5

    主题

    2

    听众

    65

    积分

    升级  63.16%

  • TA的每日心情
    难过
    2011-11-20 22:41
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    群组Matlab讨论组

    回复

    使用道具 举报

    0

    主题

    3

    听众

    10

    积分

    升级  5.26%

    该用户从未签到

    群组2011年第一期数学建模

    回复

    使用道具 举报

    0

    主题

    4

    听众

    43

    积分

    升级  40%

    该用户从未签到

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-5-28 20:25 , Processed in 0.392064 second(s), 99 queries .

    回顶部