数学建模社区-数学中国

标题: 老大,怎麼寫并行口呢?用到哪些API函數阿 [打印本页]

作者: kenneth    时间: 2004-6-1 14:39
标题: 老大,怎麼寫并行口呢?用到哪些API函數阿

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

' E3 |1 A, @5 E& _$ N* H6 |

我暈,看來這回死定了

1 n5 i/ z' a8 G5 a

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

a+ }" {/ x9 \* x. P

老大救命哦

[em06]
作者: kenneth    时间: 2004-6-1 14:40
而且書上都找不到哦
作者: ilikenba    时间: 2004-6-1 23:28

API之打印函数:! k9 P3 O& U a* k0 x0 C8 K AbortDoc 取消一份文档的打印 ! N! i" l4 H: K8 t1 XAbortPrinter 删除与一台打印机关联在一起的缓冲文件 . I1 f0 B" A: `: U" rAddForm 为打印机的表单列表添加一个新表单 ; M! D+ c* x5 SAddJob 用于获取一个有效的路径名,以便用它为作业创建一个后台打印文件。它也会为作业分配一个作业编号 * X4 _" E3 f1 i3 YAddMonitor 为系统添加一个打印机监视器 9 _' x( y s8 l9 G: c+ W+ ZAddPort 启动“添加端口”对话框,允许用户在系统可用端口列表中加入一个新端口 + j, y( \+ ~) j8 f3 F( x AddPrinter 在系统中添加一台新打印机 + {3 g5 U6 S% z& ]+ p AddPrinterConnection 连接指定的打印机 ) f" u! T" `, \/ k$ hAddPrinterDriver 为指定的系统添加一个打印驱动程序 7 e8 E7 R# G/ E) c5 nAddPrintProcessor 为指定的系统添加一个打印处理器 2 V6 v# a5 H( i* G) k AddPrintProvidor 为系统添加一个打印供应商 ) b. v# s7 u6 i1 p( Z4 o8 F eAdvancedDocumentProperties 启动打印机文档设置对话框 7 S7 r9 o' d& o6 { ClosePrinter 关闭一个打开的打印机对象 * Y; b7 F5 Y x; m7 RConfigurePort 针对指定的端口,启动一个端口配置对话框 ' x# Z3 w% d" r1 w, Q ConnectToPrinterDlg 启动连接打印机对话框,用它同访问网络的打印机连接 # V, f+ \: o4 f! Z; B- ^ DeleteForm 从打印机可用表单列表中删除一个表单 ) c/ Q0 d6 Z A3 W1 | DeleteMonitor 删除指定的打印监视器 " l+ S8 D* b/ wDeletePort 启动“删除端口”对话框,允许用户从当前系统删除一个端口 0 s0 T3 r4 R( Q+ @ DeletePrinter 将指定的打印机标志为从系统中删除 F% j' ]7 e" w& G# r DeletePrinterConnection 删除与指定打印机的连接 : E( u+ z* S0 d3 S% q8 f DeletePrinterDriver 从系统删除一个打印机驱动程序 , R! y4 l! n3 ~ DeletePrintProcessor 从指定系统删除一个打印处理器 ! n& x" |! c. C! k% P" J+ I* M1 G1 j DeletePrintProvidor 从系统中删除一个打印供应商 ' n% ~2 Y& g* \DeviceCapabilities 利用这个函数可获得与一个设备的能力有关的信息 W! a4 J: b C! x* z6 {/ g* HDocumentProperties 打印机配置控制函数 8 T+ H% x8 c( x2 Q9 J9 kEndDocAPI 结束一个成功的打印作业 9 K) w! Y& }9 ]9 H% M, V0 y! j J EndDocPrinter 在后台打印程序的级别指定一个文档的结束 $ a) s- u6 \7 f1 W: S2 i0 IEndPage 用这个函数完成一个页面的打印,并准备设备场景,以便打印下一个页 7 V7 a1 g) P3 s1 {. c3 q: a, \4 _8 @ EndPagePrinter 指定一个页在打印作业中的结尾 , v$ v2 O5 |8 ~. |+ R; ?/ lEnumForms 枚举一台打印机可用的表单 Q- i0 P! Q' @* l& n# K5 J& l$ ]; zEnumJobs 枚举打印队列中的作业 v1 N8 {" a& T* v EnumMonitors 枚举可用的打印监视器 ( |% L4 F' n- i6 M% z ]) l+ ^ EnumPorts 枚举一个系统可用的端口 7 W3 Q. g G/ L2 gEnumPrinterDrivers 枚举指定系统中已安装的打印机驱动程序 0 p" b. s5 ` m1 {% j. H EnumPrinters 枚举系统中安装的打印机 $ ^) N; N7 `1 C& J EnumPrintProcessorDatatypes 枚举由一个打印处理器支持的数据类型 1 x, A8 d2 V8 h: B: E: k7 J! g EnumPrintProcessors 枚举系统中可用的打印处理器 % v6 U6 p# d0 l Escape 设备控制函数 ' A. g( u" b6 s0 ?% ^ FindClosePrinterChangeNotification 关闭用FindFirstPrinterChangeNotification函数获取的一个打印机通告对象 ; B3 ~5 }2 J" e MFindFirstPrinterChangeNotification 创建一个新的改变通告对象,以便我们注意打印机状态的各种变化 1 z' \* Q) k8 }, U% v FindNextPrinterChangeNotification 用这个函数判断触发一次打印机改变通告信号的原因 0 S$ A8 h& x: TFreePrinterNotifyInfo 释放由FindNextPrinterChangeNotification函数分配的一个缓冲区 ( e$ D- o0 e: }8 v0 ZGetForm 取得与指定表单有关的信息 5 m1 h! I$ A( v0 U) k9 f) K GetJob 获取与指定作业有关的信息 $ b( _( [& A3 H% b! JGetPrinter 取得与指定打印机有关的信息 4 d" e e; Q; } GetPrinterData 为打印机设置注册表配置信息 , X) g/ R$ I' M) S% K F GetPrinterDriver 针对指定的打印机,获取与打印机驱动程序有关的信息 9 w3 y8 `4 t A! c% zGetPrinterDriverDirectory 判断指定系统中包含了打印机驱动程序的目录是什么 , h3 f; V" q$ z/ W2 o- FGetPrintProcessorDirectory 判断指定系统中包含了打印机处理器驱动程序及文件的目录 - q# \) H' Q% K; y. w% ^( [OpenPrinter 打开指定的打印机,并获取打印机的句柄 6 ~# v/ D( T( l- j) S PrinterMessageBox 在拥有指定打印作业的系统上显示一个打印机出错消息框 / \$ ~; p1 a. [7 l PrinterProperties 启动打印机属性对话框,以便对打印机进行配置 + S% Y$ ]) q2 n, H) }0 C ReadPrinter 从打印机读入数据 . m' ~( y# j) S2 }- v, [3 hResetDC 重设一个设备场景 , A+ ]0 l( o/ m0 w/ ?0 B& V7 a/ i ResetPrinter 改变指定打印机的默认数据类型及文档设置 - B( C* _$ J) O+ g0 s ScheduleJob 提交一个要打印的作业 7 P; Q' K+ P! M' ]0 mSetAbortProc 为Windows指定取消函数的地址 ' [) p. T* Z, L& FSetForm 为指定的表单设置信息 $ u7 W3 o& Y8 Y( c0 a' ] SetJob 对一个打印作业的状态进行控制 1 Y; z/ [8 B" Q: F5 }( Q8 n/ PSetPrinter 对一台打印机的状态进行控制 - X& K( u) O. e) E/ b5 YSetPrinterData 设置打印机的注册表配置信息 0 m0 l- T! f+ r. y# CStartDoc 开始一个打印作业 * s: M% s, r6 z( M4 HStartDocPrinter 在后台打印的级别启动一个新文档 & k) O' o6 j/ w& d' U7 r& R9 u5 H: S6 | StartPage 打印一个新页前要先调用这个函数 ; ?4 ?- ]* Z! _; F- b) ~ StartPagePrinter 在打印作业中指定一个新页的开始 2 k8 C+ w+ Z2 l" ~1 ^0 aWritePrinter 将发送目录中的数据写入打印机 % t+ `2 H7 l* N4 P* o P: ?% K


作者: ilikenba    时间: 2004-6-1 23:34

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

主  题: 关于usb通讯方面的问题。请AKing大哥及相关高手来看看,万分感激!!! # A. v- |* T: {8 g2 ?% O$ e% J+ B7 X7 X 作  者: aiyu33 () 3 ]5 Q/ a% Z. p* S, W等  级: ; a6 E7 P3 o/ j 信 誉 值: 100 - D% o1 r; I: c K: B3 f) T所属论坛: C++ Builder Windows SDK/API ; L5 \. S6 N; Q# {/ E, j; T- _2 ^ 问题点数: 100 8 p. }) q4 U1 D' C* j 回复次数: 12 ( C$ j$ [; x; q4 v1 N1 \' v; Y8 T发表时间: 2003-12-16 20:43:13 / [3 I6 r5 }2 f. o: q9 N7 O: r# u 9 x3 D$ n; x% P * _! {* I& f5 P: B0 C% D

最今我接到了开发pc和pocket pc通过usb口通讯的任务。这两个星期我参考了很多方面的资料,特别是AKing大哥写的一些文章。但我始终没有打通这个关口,我贴出我的代码请AKing大哥看看,现在很急,多谢。 1 N+ p0 b: j; m6 Z+ P) {6 a9 npc的os是windows2000professional - x8 ?+ {% \) B; W* W6 C: Epocket pc是hp ipaq 2210,os 是pocket pc2003。. V0 c# A/ K y( X o2 Q 我装了activesync3.7。我查看过了,这个activesync目录下有pocket pc的驱动程序。pc也能识别。2 z* O# x4 T8 x) L7 v0 Q 下面是我在pc上调用usb的代码。+ t1 ]8 {" B" a( H( E 下面的代码我能打开hidn类型的usb,但是就是不能打开pocket pc的usb。 6 T) A+ B; v- M# K//classGuid = {25dbce51-6c8f-4a72-8a6d-b54c2b4fc835}) \' l* `$ L: d& [: N DEFINE_GUID(GUID_CLASS_PALM, 6 x3 _" P9 ^) ^$ @' u 0x25dbce51, 0x6c8f, 0x4a72, 0x8a, 0x6d, 0xb5, 0x4c, 0x2b, $ Q3 }$ J) D( T5 v6 F0 v9 f2 D. p 0x4f, 0xc8, 0x35); 7 ~" c& ^ F6 c Q6 pGUID HidGuid = GUID_CLASS_PALM;9 g1 i/ `8 {4 x2 y9 Q HANDLE Get_DeviceHandle( GUID* pGuid) 2 H; I, i" H, m' h& p{) i' m& ]/ n9 Q1 x + u. n$ y- D6 h' J! V U/ y5 y HDEVINFO info = SetupDiGetClassDevs(pGuid, NULL, NULL, DIGCF_PRESENT | DIGCF_INTERFACEDEVICE); 9 K. k/ X7 D6 e/ D& k, ]2 J 7 @. \! q5 x5 S* x if(info==INVALID_HANDLE_VALUE)% o% W2 T3 n3 M9 X4 P {/ y {, w( A: H* ]% e/ _2 S4 O+ n& J! @ printf("No HDEVINFO available for this GUID\n");/ p9 k0 r9 F6 B6 [6 a& S return NULL; * |% r4 ?4 I6 y4 G7 _ } 1 P+ T% L! G9 |* ?' T0 A SP_INTERFACE_DEVICE_DATA ifdata;, i9 Z0 U) D. ~1 l& }% p2 p2 n ifdata.cbSize = sizeof(ifdata); / O0 O8 N8 I; y3 M( O: {//0000是我在注册表中找到的序号 ( Q& ~5 h5 e) j2 A- l1 @ if(!SetupDiEnumDeviceInterfaces(info, NULL, pGuid, 0000, &ifdata)) ( Z$ g* V' x; S+ r. B9 K* v. V7 c {4 j# ~: [8 o7 ~5 e printf("No SP_INTERFACE_DEVICE_DATA available for this GUID instance %d \n", instance+1);9 G ?7 @4 L6 F9 z SetupDiDestroyDeviceInfoList(info); 5 S, b5 i1 O- J# u4 J, X return NULL;, ?5 ?0 y4 Q- @4 P }

// Get size of symbolic link name# I4 P9 g( A; h" G DWORD ReqLen; $ @0 r. ]( X" N4 ]7 x , V% X$ `. R0 p SetupDiGetDeviceInterfaceDetail(info, &ifdata, NULL, 0, &ReqLen, NULL);8 o/ ?3 q! W. w! s0 K2 _/ r+ ` # N. H0 ]8 A! I3 H }8 I& m- e PSP_INTERFACE_DEVICE_DETAIL_DATA ifDetail = (PSP_INTERFACE_DEVICE_DETAIL_DATA)(new char[ReqLen]); 9 ?" A) t* K \7 t3 c' s8 U ( F4 u+ g1 t* L& h if( ifDetail==NULL) * B# d: ?! V3 I" J6 w9 b4 o' e {3 p/ H* r- I' i% G. N/ q0 t SetupDiDestroyDeviceInfoList(info);) ` y7 v0 y$ M, T" b' [' D return NULL;6 H0 Z$ ~7 K9 ^8 [ }

// Get symbolic link name- D% k$ w4 I5 i ifDetail->cbSize = sizeof(SP_INTERFACE_DEVICE_DETAIL_DATA); + e1 E+ ~9 q4 U2 |1 p! q) D 5 { ~9 T% i8 y$ b1 b E5 U' Y if( !SetupDiGetDeviceInterfaceDetail(info, &ifdata, ifDetail, ReqLen, NULL, NULL))6 w; x2 S0 a/ g0 X9 J { * s, d$ m3 W* r, F2 C/ G SetupDiDestroyDeviceInfoList(info); ) D/ f. J0 O+ V6 x6 v1 W! I delete ifDetail;1 P) R2 ^" Y8 t% ~* B& g, z. m/ m return NULL; 0 @6 F1 z7 P' a5 } }

printf("Symbolic link is %s\n",ifDetail->DevicePath); " N) k2 e6 j7 A

/*\\?\\usb#vid_03f0&pid_1016#5&1bc41f6c&0&1#{25DBCE51-6C8F-4A72-8A6D-B54C2B4FC835}这是ifDetail->DevicePath的内容*/" q8 F0 V* E, A# Y6 u // Open file9 d) _! m a* @ //前面都很正常但就是下面始终得出一个无效的句柄,我也就无法开展下一步的工作. $ s5 R8 ~) Z* N! |) T+ O8 Y HANDLE pDevice = CreateFile( / H4 ^* G$ p$ r. x0 ~. A+ R9 y ifDetail->DevicePath, 2 e0 w: F$ X% J$ Y& J: Y GENERIC_READ | GENERIC_WRITE, + M: e. O/ A; o0 i. q FILE_SHARE_READ | FILE_SHARE_WRITE, ! \% D4 F+ c, C% ]. u a NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);8 o* ]$ a- W4 l& w1 ~! x4 B 0 i4 S C' f; W9 N. j1 w; }. o if( pDevice==INVALID_HANDLE_VALUE) pDevice = NULL;9 z; u- y" T9 L) \! k SetupDiDestroyDeviceInfoList(info); # u" B" `; M8 X$ _* N, C4 i( ^! v : z9 {9 r0 L8 [6 U( m9 l& ~ return pDevice;3 o# U6 r8 U9 y$ h7 S7 {0 z8 Y } ; C/ R$ G+ i- q) v$ }# v) R8 ~再次感谢关注这个问题的人们。

3 {- `5 p* o1 ] B5 q- i9 W + P' ^" f6 _* f! T8 ]; X 1 A# ~3 Q1 n( J) j 回复人: constantine(飘遥的安吉儿) ( ) 信誉:101 2003-12-16 21:23:57 得分:0 # @* e( I# u6 ~( @1 G ' l# @/ R$ P( ^ j1 v8 [& E) M9 A2 W, \: g2 T! I; T * a7 x# ]& Q- _6 s8 E3 i4 g h2 {study

8 [: s' d$ Y2 d 5 k: U8 I0 X% F3 H3 H2 l# FTop ) Y8 ~* t5 o5 f ' L O# r2 ~ q* d9 E# m9 O 回复人: wenyongjie(一个想成为大鸟的小菜鸟) ( ) 信誉:95 2003-12-16 22:28:46 得分:0 3 F$ \6 ~- h7 H" t* i0 T5 U+ r 9 L; y" G( w, w) e3 k# d8 G : x5 ^" r# C9 q N% P/ b 5 J: c5 g- b9 o6 g1 q+ N只有学习的份

3 N% _6 x4 V) `, p a6 L8 Y2 ^( S2 s" v, TTop ' H1 ?; `9 p. Y/ U7 Q . f8 I$ D& ^! U2 Z 回复人: HUANG_JH(保卫钓鱼岛) ( ) 信誉:115 2003-12-17 9:50:41 得分:10 : F% W) r8 H: B & z+ [, }& W% H% b- s+ C ' ]9 g9 m& j( o6 F* b, O* k5 k7 M ; h' [3 ?6 S6 [, y6 X7 o- | 不知道有没有用!

///////////////////////////////////////////////////////////////6 N, I \- V! q1 w8 t3 J1 J4 ?1 S // HW9911 evaluation board software Rev. 1.0 ) _5 w. Z) E0 [! B// program by Liu Ding, Bei Jing HEAD Elec." u' n/ w, j l9 L' O* Y$ E% J // this is the main program for the HW9911 USB device evaluation board / T# @ V2 L5 u# W9 Y6 R0 G7 B8 q// it illustrate the basical read/write process of HW9911 : N$ I; p5 ]( ?1 G$ v+ S. J+ k; Y// by three examples:, W; _+ @! \4 v2 S* U // 1. write datas to ram on the evaluation board 4 E$ n) [3 ]; H; I4 @- S% y// 2. read the datas from the ram on the board0 w3 J$ K p# x6 b // 3. send datas through RS-232 serial prot on the board. ]2 Q% f w* \! t5 ` // ) p. B, u" V( K6 p. F // the whole project are build with MSVC 6.00 S$ p# }! t+ o5 f c- N // and tested on windows 98 platform. $ w# M) Y7 n) ^4 X; k' G: n8 R// 9 b4 R; i0 c. e, ]) ?// notes: you can use hyper terminal to reaceive datas form RS232 port - t& O8 T* }& q- C//. t9 I' d" G' G6 u* B2 D // this software are designed by Liu Ding 1 j$ E5 ^! n6 D2 Y8 ]// if you meet any problems, pls contact by email:6 e& J2 |( M) p4 H // hugehard@263.net 3 y7 h6 F# u& P# c! l// or contact HEAD Co. by Tel 86-10-87312497 ' O0 }& [! x8 G: i/ f8 F$ G// or by fax: 86-10-87312495 , t* q$ k2 l$ B# U/ h8 ~3 T9 a///////////////////////////////////////////////////////////////

#include "hwdll.h"* V) p5 Q3 l7 U* Z #include "stdafx.h" . U9 k' \2 |" [; z#include <stdio.h>& \4 r8 d. N4 n7 |4 W8 M2 U #include <windows.h>! W$ f `; s7 a# Z #include <memory.h> : D5 L' G P7 h7 X4 L2 {#include <DEVIOCTL.H>2 C; c' Z- p3 X$ ?7 y3 Q) }( F4 D( l #include <stdlib.h> 0 u5 n7 D$ c( f$ @( D0 r#include <conio.h> 9 T; B$ L& m6 Q#include "hw9911.h"" i1 i. d, D/ A& K7 z+ m/ M- b' { #include "test9911.h"

6 ]. n9 L1 r8 o# c7 Q int main() - @1 J+ M3 Z1 l1 |! x6 l7 C{8 q# A1 P7 p$ E2 l1 K5 ~ int hOpen=FALSE;0 {0 j) |6 N M6 P7 Q! s int hCommandLength=32;, f' r" Q0 b. q1 G/ {% S4 t int hDataLength=64;9 z- F" K+ M6 }) q# Q int i,VertAddr=0,HorAddr=0;) D8 Q6 g1 a G( | int addr,TotalLen;# K7 _( I- g2 U ` USC StAddrH=0,StAddrL=0;) i& V7 j7 r u9 \/ M& K USC DataLenH,DataLenL;* }+ ?" ?/ ]% ]9 q3 x6 v# i7 T USC *hDataBuffer,*hCommandBuffer; # Q7 D0 A: e, ^' G, {! a! f5 ^ USC ch1=0x61;9 K( u; a% t! M2 z4 o HANDLE hDeviceHandle; 1 J& l$ J( D4 U( v 9 p; P, k4 N' s8 D- R# c- `& W T printf("************************************************\n"); & M6 m6 z+ Q2 n+ k1 Q2 {/ j0 E0 C printf("*******HW9911 USB DEVELOPMENT BOARD*************\n");9 {6 T# _. x- \3 ` printf("************************************************\n\n"); 2 Q- `% ~3 c5 x# R printf("now press any key to open board\n"); # @5 v; @8 L& j+ m: J getch();

/********* call hDeviceOpen in hwdll.dll to open the board***/# I$ q9 U( M X: a //hOpenDevice 说明:5 n1 u& O0 t. Q( z$ Y$ r // BOOL hOpenDevice(HANDLE *DeviceHandle) S6 J" y0 H0 X A& W0 w j// 作用:打开设备 @9 e$ z; c* Z D4 F // 参数说明: # Q" |% G" ^% t$ |0 L- P- U0 {// DeviceHandle:设备句柄 ( N' F( p6 f$ ?% ~4 \* O3 j// 返回值:: o: y; W! c+ g: r t // 设备打开成功返回 TRUE,失败则返回FALSE1 {% C# S* G! @ if( (hOpen = hOpenDevice( &hDeviceHandle ))==FALSE) ( X, W8 I- A2 s6 ~6 T; a {( Y1 w- a1 h8 I$ f9 {# O K3 K# F printf("can't open device\n");5 j, V4 x9 _9 {0 a9 C" z printf("press any key to exit\n");) D$ P2 W- d8 X/ R: b/ ` getch(); & h; h1 c: w2 e; Q, ?; a, Y return 0;8 @- h( _8 R3 b% T2 ^/ y8 N8 O }8 w! |% R- j. t6 B! G* {* m5 f else ; T# o) e# M% [+ i1 J, Z- E printf("\nCongratulations! device opened!\n\n");

/****** build and send command **********/ / s) ]( A- ~/ ]: R4 @& j; A! I: q3 ~ printf("how many bytes do you want to access?");8 W0 P. n# ?" |0 w) W6 J scanf("%x",&TotalLen);% \* V* h; x) \% @1 r& g+ ~+ l3 V while(TotalLen > 0x7fff) . T( x% u; W2 Y/ [1 L { 4 f* G$ T$ F. J' ~" b) a printf("pls input a hex data less than 08000\n"); " A J' x' X7 [; I/ w) g# l& R scanf("%x",&TotalLen);8 l! z$ {: C$ X7 L5 ] }$ e" Z. O" w" _2 i4 Y' L6 m DataLenH=(USC)(TotalLen/0x100); //data length high bytes: J n8 E" C9 I/ u' j DataLenL=(USC)(TotalLen%0x100); //data length low bytes

printf("************************************************\n");& V' e( p1 ^ S& d printf("now program will write datas to ram on board\n");4 y- m0 ?7 l* ~+ Q printf("total bytes of datas is %x\n",TotalLen); & f+ z! k- F. b1 W6 a5 h+ u printf("press any key to continue\n\n");' Y1 Z/ ~2 m! J0 t8 R( q1 B! r getch();1 X, Z2 y" C9 `7 f7 }: S- U0 L /***************************************************************** 3 P% ~( g/ K: u/ i now will build a write command packet 0 O- f$ p- t$ }/ F! t with the first byte is 'w'.; A( }% O2 S3 G2 ` and the following bytes are:+ `: C" B4 G2 Y1 k5 @ start ram address byte high, start ram address byte low,; x* D" O f& m) f: X1 {5 N datalength byte high, data length byte low., z! N; D/ w7 {$ N" j this packet will send to device through WritePipe1,- U0 w( P4 i( x$ w, k5 L which is endpoint 2 of HW9911.2 |6 o7 Z; _% m7 W6 v when the device receive this command packet,2 c, ?, u9 @) ]1 f" a9 s it will write TotalLen bytes data to Ram on the board* O% O2 g; b2 l/ b, E* K ******************************************************************/

8 |1 l9 ~- o( ]: w hCommandBuffer=(USC *)malloc(hCommandLength);, g- B W' s& x' h hDataBuffer=(USC *)malloc(hDataLength); # h: u ?! K% p! E4 l5 T+ z0 \ hCommandBuffer[0] = 'w'; //read command3 v- G r! W6 x0 Z8 n: F$ X2 U4 x8 S9 W hCommandBuffer[1] = StAddrH; ) J$ q: w# A) D hCommandBuffer[2] = StAddrL; : D1 B5 `7 R% a% B1 {1 v$ R( a" B hCommandBuffer[3] = DataLenH; 4 p2 ?- Y# [, [) Q2 l hCommandBuffer[4] = DataLenL;

/* call hUSBIO() in hwdll.dll to send command packet to device*/ ( g& S3 v5 m0 \' l) T' ^1 a( M// hUSBIO 说明: : S1 X# z. r6 ]; k// BOOL hOpenDevice(HANDLE *DeviceHandle,6 J. o+ ` {. C8 Y& J // unsigned char *IOBuffer, " }% Y7 p4 y7 K, {8 Q) x// int BufferLength, 2 A' K9 s( b8 Q// int PipeNumber,& Q5 D" m- A% y) m // int Action) 4 m1 a D, b6 Y// 作用:设备读写 / r" H' S M. b" t8 K// 参数说明: , c$ \/ Q5 |3 R4 U+ v5 x) j2 K3 P// DeviceHandle:设备句柄 : f6 K t. Y0 A8 m8 X. F5 X, m( e// IOBuffer: 指向要传送的数据指针 3 t1 q# e" P; H8 M1 g9 j! o// BufferLength: 数据包长度' ^/ m3 ?5 |& E" C3 |" j // 对于发送缓存1、2和接收缓存1、2,BufferLength必须小于或等于32 ; i; H G3 o8 P* I// 对于发送缓存3和接收缓存3,BufferLength必须小于或等于642 y, \4 ? ]' p: u6 Y // PipeNumber: 通道号 ; L$ b5 Q6 J) O" H9 _// 发送缓存1:PipeNumber=0; + b! i" ~9 t0 p6 P5 ]// 接收缓存1:PipeNumber=1; ! `( \" G3 ~( R6 x; p// 发送缓存3:PipeNumber=2; 2 l' K) [3 _3 E' e* V- |// 接收缓存3:PipeNumber=3;! y& k! S2 v0 M$ o0 ?) ] c | // Action: 读写标志。TRUE代表从设备读数据到主机 8 j% D' y- k3 r" [- K// FALSE代表从主机发送数据到设备 ! ~( t9 x; X1 e$ p2 O' |// 操作接收缓存,Action必须为FALSE7 v3 N ^% ~2 d$ f7 U // 操作发送缓存,Action必须为TRUE + d h/ |* i8 J7 W, B |// 返回值: J/ j9 k% }$ ]2 ]" k: @* C // 操作成功返回TRUE,失败返回FALSE

if ( hUSBIO( &hDeviceHandle,5 U! w5 N: U) k$ g" f3 Z hCommandBuffer,; u1 p3 Y! {0 G hCommandLength, 2 [3 O$ d+ V) @0 B' h [ hWritePipe1,! }& i% _4 n5 W0 z5 H FALSE) == TRUE)' r- {4 N* `$ p2 W7 o3 i { 1 l: t& s0 s: W8 y0 v$ I- B printf("command 'w' writed to board\n");3 s9 K- ?3 e( @9 d" E b printf("now press any key to write datas to ram\n"); L6 Z% V4 G# g9 x getch();$ C: |: l* y" N- {1 A' F; G } 3 s6 t4 o, ~# u* F1 s4 @ else! |, Q! a" ?+ f/ C0 k+ m printf("data can't write to device\n");

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

printf(" "); z' M7 H5 W4 z0 [8 f/ Z g for(VertAddr=0;VertAddr<=0xf;VertAddr++) ' _' C; E( M; F2 M6 V/ ~ printf("%02x ",VertAddr);0 B" T: d% h. \6 u printf("\n");' |' M8 L9 ]% J) ] addr=0;* ^5 n+ X) Z: R/ }9 g8 ^& \ while (addr<TotalLen)% Y" n3 p: X# b. f% p8 ? { b B: h( ~1 h& S if (addr+hDataLength > TotalLen) 7 e- ?! R, G' e3 b1 L" c hDataLength = TotalLen-addr;0 ^3 I. y9 u+ ]) q for(i=0;i<hDataLength;i++) : k1 l) h' { C* P. u: \) Y% o/ H { " p# c* m/ e2 k- T hDataBuffer=ch1++; 9 X" ]+ o6 F/ ]9 u, C" E) e0 d if (ch1 > 0x80) ! N4 l( V, ~) p ch1 = 0x61; 2 ]3 T' ^+ e$ M) {+ A7 T }" Q9 m% T5 D3 g6 A7 ]6 N: ^( I /* call hUSBIO to write datas to write pipe3, which 0 G& D' f k3 l. g6 r+ U1 D! l is endoint 6 of HW9911*/

if ( hUSBIO( &hDeviceHandle," r* V0 k5 @) j v b hDataBuffer, & W5 v: M$ I) _7 X2 x hDataLength, S- F6 \" J+ x* Q U hWritePipe3, 0 ~1 X! j" A# y, {) `4 t FALSE) == TRUE) //FALSE means Write operate # R7 h) a$ N. ?9 b4 W3 c {# f/ @- J. D+ G ] for(i=0;i<hDataLength;i++) , H4 f& |; R: Z( N {! u! p: o6 m4 S1 s2 c /* print format control */ 3 O; q: O& q7 n. K if(i % 16 == 0) : k( Y7 ^, @" ^. `4 u- m* G7 A { 3 r) j. F! `2 `/ [ printf("\n%04x ",HorAddr); ) S. U# x& F1 v0 Q- D/ D HorAddr=HorAddr+16; / L( Z6 l' x8 ?+ g. {* X }7 E% ^ T9 B6 H6 S4 | U) F k printf("%02x ",(USC)hDataBuffer); 8 G1 ]" T( d2 L/ z7 s U } ' N* d8 m% H0 Z6 t$ R9 q addr=addr+hDataLength;9 D) Y2 A* w8 h) ^. Z/ k/ Z } 3 B0 o5 L8 r, P' c1 w( L else# \3 W4 N3 {# [, k {! d) u+ N$ a! j, f. W printf("can't write to board\n");0 e2 ~" J1 X1 d! l: w9 ?0 c exit(0); : N7 w9 `( D9 [% ?9 B8 { }4 u6 w- Y$ W/ k2 Q }# a9 C+ Z7 J. x printf("\n\nTotal%x bytes write to ram OK\n\n",TotalLen);

" }& }. l! L5 _9 J; V $ t+ ~- {$ M) PTop 4 k6 a3 l+ l! w* y ! s: ^: [, M8 O/ u, V8 u0 | J 回复人: HUANG_JH(保卫钓鱼岛) ( ) 信誉:115 2003-12-17 9:50:51 得分:0 / K/ x, a9 R% K$ I" m" ` 7 h- d( m* u& B; n( G6 ~9 H, G " |. n0 N8 `/ U; _

/***************************************************************** 2 |8 @* D& U- K& b2 W now will build a read command packet 6 ?. P# N) M! x' v+ y% b% G with the first byte is 'R'. 2 B; j" N1 D u0 n9 { and the following bytes are: - R! Z8 }: e0 z* j; j' U start ram address byte high, start ram address byte low, 8 g4 e8 {% J1 M' I# a) y datalength byte high, data length byte low.+ Y2 ~# ~2 C' _. t* F/ N this packet will send to device through WritePipe1, 2 m4 Q/ {8 M- I+ g/ U2 c3 J6 a which is endpoint 2 of HW9911. ! y5 W7 v3 n% f& A! _ when the device receive this command packet, " B8 n8 K+ G# K4 _* a5 g$ |3 ]: Y$ G it will read TotalLen bytes data from Ram on the board7 r5 j& U+ `8 J ******************************************************************/

printf("************************************************\n"); ( p6 [1 q. F6 I1 t) J! V printf("now program will read datas from ram on board\n"); 1 O/ ^" n$ b `, m printf("total bytes of datas is %x\n",TotalLen);9 U7 D& d) _ ]$ r, U7 A9 [ printf("press any key to continue\n\n");4 s# O# W6 U) X3 ?& } getch(); 5 Q( n! R3 }; c! L5 B hDataLength=64; ( Y2 F9 |7 m1 P9 R+ g. X: H- H hCommandBuffer[0] = 'r'; //read command 1 W( @9 h' S: p, b( H+ { hCommandBuffer[1] = StAddrH; 0 }- b0 R0 ?- Y+ v; ?; g- x7 K hCommandBuffer[2] = StAddrL; 2 { s8 N; O% N( G* k5 E hCommandBuffer[3] = DataLenH; 6 |& F [# Z( N8 X7 \) ] T5 X hCommandBuffer[4] = DataLenL; " [4 }+ {" y6 x/* call hUSBIO to send packet */ $ x/ u5 c' `. h- I if ( hUSBIO( &hDeviceHandle, + A% A# S! A0 s4 z8 [, H6 }6 } hCommandBuffer, 3 {& T g; e+ Y/ U, a3 x* `9 J. z. C. ~) K hCommandLength, $ |& G2 t2 s1 v( D hWritePipe1, }; I: n1 L, p; ^ FALSE) == TRUE) / a( v' _6 `+ n {6 g; \" s* m; X5 _- P9 p3 D printf("command 'r' writed to board\n");4 [' b2 G+ B; x$ Q4 T q+ u4 ^ printf("now press any key to read datas from ram\n\n"); 5 `' w6 d/ u$ H7 z5 c4 M getch();0 y; n$ z P: b' J! ] } ! D: G5 K; y* L# S4 p$ j5 n7 i# [ else [/ ?6 A0 S1 q7 x( X6 k" N" d- y0 t9 [" U printf("data can't write to device\n");

/******** read ram data form board **********/0 ~, R2 y* G4 T3 X! M printf(" ");( ?; C% d4 y+ @$ C! t6 r for(VertAddr=0;VertAddr<=0xf;VertAddr++), |7 F# g# e8 }+ F printf("%02x ",VertAddr);4 | z" f) ~+ u- W. m1 u: Q printf("\n");1 W1 v& A; V5 ~) g, @( Y+ w: C addr=0; # x9 @% Q$ ~. q, k! p6 S$ } HorAddr=0; ( @) z! } S0 j( t while (addr<TotalLen)4 |! N' N9 F: q% H) c0 y { : X" h# e! q: O s; b if (addr+hDataLength > TotalLen) 7 a% B$ j/ K5 H9 j( {: o hDataLength = TotalLen-addr;/ A% M0 T+ o8 l- k1 p /* call hUSBIO to read datas from board */+ y% Q, y# y4 n) j if ( hUSBIO( &hDeviceHandle, ( S, ~# @9 ]& a$ C. X hDataBuffer,& G( p1 {; u7 g {. n0 I hDataLength, 9 R. d9 F7 S) A$ N0 e0 {( e* L% j1 s hReadPipe3,# \8 |5 u/ T. T/ s* S TRUE) == TRUE) //TRUE means Read Operate , F2 V% S6 H( t+ ~! p9 d0 Y { $ J, x+ L. I! E& n# ` for(i=0;i<hDataLength;i++)) g) Q; k8 h7 Y% L {1 b! } E ^% [! b" J- ^ /* print format control */8 x4 R9 A) h0 y if(i % 16 == 0) ' Z; [/ D2 F9 y. ? { 4 L: B/ M0 N/ ]; Y {7 M printf("\n%04x ",HorAddr); 5 U @/ U5 z& S5 V4 @5 Y HorAddr=HorAddr+16; / u/ r8 G& t. v# ^! m; k: q } 4 j$ i5 U* ?' P printf("%02x ",(USC)hDataBuffer); $ }' t6 n' Z! q. P% P5 ^ }7 x( R2 ]5 K* k: _8 v# { addr=addr+hDataLength; 7 R) P, H, c2 L! l' h; [ }. m: x4 R2 ~. z/ x1 w1 n' X, N8 L else 2 E) v r1 [+ V! v# E" U4 q { . ^" y, @; T1 c2 m7 L) _; A printf("can't read from board\n");& A" L4 }: R2 X- S exit(0); * Z! E7 h/ N: b }& ~3 `+ s; Z, J } Q! U, L m1 ]2 ~4 W printf("\n\n");! L% f S. P: V0 d( N. }# H0 ?7 G printf("%x bytes read from ram OK\n\n",TotalLen);

/*****************************************************/ + z6 _- h: T2 N+ \( Y/* process rs232 test */! f$ z4 d& N7 u+ E N. J /* the first byte in this packet is command 's' */ ( S* K7 c; B6 i, q' S: v/* and the following 2 bytes are used to set */, N9 O/ b( q1 f) R/ e# e% _ /* the baud rate of 8051 */ 6 |; w- _( @# c/* they will be write to TH1 and TL1 respectively*/- C: z m( J9 D. }, J /* the following bytes are datas will be */ 5 J' T) c: L2 u& k/* send through RS232 serial poart */9 B8 e) S% V6 t5 V- _ /*****************************************************/ 6 X0 D5 ^4 J( }9 o3 v( O# I) Q' m printf("\npress any key to process RS232 Test\n");6 @! @) p/ J* O# _ ^% c n) @ getch();/ k3 Z7 U' i8 {' s& b% i- P1 v . S/ b. ?: j# \' g% r0 ?9 ^ USC TH1,TL1;3 o8 _2 W0 w$ i" s2 B0 X& X, [8 ~ char hStr[30]; F5 V/ }+ _5 J( K$ g# F TH1=(USC)(BD9600/0x100);7 I. d' w2 Z) y0 R% K% k; ~ TL1=(USC)(BD9600%0x100); " z, }: {# L m$ W% c hCommandBuffer[0] = 's'; //read command ) U& N+ p2 W* _) c0 V& y, c hCommandBuffer[1] = TH1; ; b, h# o9 g# f [ hCommandBuffer[2] = TL1; //start address is 0x0000

strcpy(hStr, "Hi, dear HW9911 consumers! ");, }, T% l6 z6 w$ K: {1 t printf("Hi, dear HW9911 consumers! ");2 X4 A0 B, }. u( w4 I5 U4 S memcpy(&(hCommandBuffer[3]),hStr,27);

if ( hUSBIO( &hDeviceHandle, * e4 o" E9 T1 l d/ h6 D hCommandBuffer,( K% u0 v! R( ]1 y 30, ! ^. \* G2 ^# r1 ~3 ]4 o hWritePipe1,0 `, j% P1 W- f. { FALSE) == FALSE)/ n3 y8 S. h9 ?2 E( j5 K- x { 3 B: W1 f/ }9 K h$ v$ P u5 a printf("can't write datas to RS232\n"); # x" s8 S1 x% b( z6 }9 J exit(0); 1 N9 i, Z3 M. P3 V( c }

strcpy(hStr, "I'm HW9911 Evaluation Board, ");1 L' V1 E" a+ r8 ]! y printf("I'm HW9911 Evaluation Board, ");, ?. X; Z9 |) q memcpy(&(hCommandBuffer[3]),hStr,29); 5 P; k; X' \( _ " T$ f/ U3 K' t4 s if ( hUSBIO( &hDeviceHandle, 0 o" |8 {0 T2 C y hCommandBuffer,. ?* @* V3 S: N( O* s 32,, J. F- k) c5 W) n5 ] hWritePipe1,- X3 S0 Z* w% B! M FALSE) == FALSE), ]' j: F |0 H" ?: | { 7 u1 \2 c% y" _5 R printf("can't write datas to RS232\n");0 A, l( Z! b- i exit(0);' D; T' r' g1 S: Z9 P+ J }

strcpy(hStr, "thanks for purchasing me, ");/ U) {# w# r; Q$ G: \- b* C printf("thanks for purchasing me, ");2 d+ J/ L& M# a& N1 } k, i6 H6 d memcpy(&(hCommandBuffer[3]),hStr,26); & J% x8 y8 l s- [! P " E) @# W9 }! Q; q& L* G! X+ s if ( hUSBIO( &hDeviceHandle, 0 w0 n n" i, `4 u1 Z- ^- y hCommandBuffer,4 n+ |/ c+ }( ?6 e1 K 29,, v E+ i8 d. U, c0 t I; A4 ` hWritePipe1,) A/ R2 z' t$ z FALSE) == FALSE)! E+ V) z7 O' t! _* A# |1 T { 5 V) _, d: u- S0 j1 c x printf("can't write datas to RS232\n");3 U3 L0 j7 |* j exit(0);# S& ?/ ^/ a% \ O! J9 W+ q7 g }" O) g" x6 J4 F% { # Y% Y4 q8 U. M+ d. D3 d5 s strcpy(hStr, "If you meet some problems, ");4 _1 p; p+ d' i% r3 ~+ n printf(hStr, "If you meet some problems, ");. q9 A% S. _) O3 @5 K5 s: J memcpy(&(hCommandBuffer[3]),hStr,27); : ?4 Z% ^, _) R& k5 F9 M 2 U9 P9 o9 U. h6 p1 L if ( hUSBIO( &hDeviceHandle, ) Q0 F6 e3 }% j0 Q% j hCommandBuffer, . Z$ {" Q( L' ~$ U: r 30, 4 c* r9 R, _ S hWritePipe1,) s( T; P+ `4 a- K FALSE) == FALSE) 8 g! q3 i4 n3 K% b { }# W* w$ k3 H+ ]0 @; o printf("can't write datas to RS232\n"); ! E. W% U c; s exit(0); 7 V6 ~0 L0 ?2 }7 A }

strcpy(hStr, "pls contact my designer ");( F9 Q0 i4 [! w p9 _ V1 T9 M' x printf("pls contact my designer "); - S6 R" e6 B4 I memcpy(&(hCommandBuffer[3]),hStr,24); " x$ R" F: n# h) x9 ` 6 z# O* c* |9 ~+ W if ( hUSBIO( &hDeviceHandle, 1 {; T2 m3 q: S K9 [* A. b hCommandBuffer,, T. G( v$ E' `. S& K 27, 3 a ?6 _0 y2 s" i3 j hWritePipe1, 0 U& G0 _# ^* g1 P& v FALSE) == FALSE)/ k9 T% x- P+ h" ^; B+ T( W+ S { . a/ o0 u2 j: {# H+ {0 @$ y+ X7 K# X. I printf("can't write datas to RS232\n"); 7 D7 H: i; K/ Z6 a$ i exit(0);8 ], A+ b, l! L3 p# N6 H' H }

strcpy(hStr, "by email: hugehard@263.net."); ; ~, `$ }. B2 V3 @2 O c6 K printf("by email: hugehard@263.net.\n");4 d7 L4 x( ^/ Y |, P) G! Q memcpy(&(hCommandBuffer[3]),hStr,27);- D! J- |# D; v 1 g' Y9 h" l+ _$ m if ( hUSBIO( &hDeviceHandle, {) N4 T# {+ m hCommandBuffer, $ ~8 h' Y% d0 Q- _/ F$ {8 x7 U9 [ 30, 6 ?; e$ W6 V2 I! { hWritePipe1,: E' d# I( C, E, K FALSE) == FALSE)8 N @6 T" N) f$ G- u { 0 f4 `; N* m2 b2 K printf("can't write datas to RS232\n");1 \. {% |7 m4 {' w exit(0);& q" S3 U; P* h z& I } , j: U) w2 @2 s! U6 h/********* call hDeviceOpen in hwdll.dll to open the board***/ a: ~! Z% H" p // hCloseDevice 说明:6 n1 T$ T. N a. M // BOOL hCloseDevice(HANDLE *DeviceHandle) 4 R$ o& f3 n. `// 作用:关闭设备 7 i: m+ D7 V7 N% i// 参数说明:( A! X) r- i0 }9 ]. }. `$ A: n/ _ // DeviceHandle:设备句柄 , P* e. k/ J2 V: V* F) R// 返回值: # B, r5 i' U5 Y// 设备关闭成功返回 TRUE,失败则返回FALSE) [5 ^0 j8 M" O m W& c if( (hOpen = hCloseDevice( &hDeviceHandle ))==FALSE)- Y* e; ], ^+ B9 I9 w! x/ } {' j/ f9 i% K5 E, `+ Q/ s printf("can't open device\n"); {2 C: f" ?3 ]4 Z2 j3 Y printf("press any key to exit\n"); * \% X% Z: T! g, O1 d9 r F getch(); 8 D/ D6 w7 i1 J) y+ {) A$ i return 0;" f f! v( L( Q- S( C( h1 } }& N* W9 k& t, _3 B/ r7 _) Q' ]: A/ D' R' N else , Z, V* @$ c ?# X printf("device closed\n");

printf("press any key to exit the program\n"); 9 M6 O; V1 O( ?; K) O- z2 p' c9 @ free(hDataBuffer); 7 }2 y* G9 x( o3 W7 y# z1 M: _ free(hCommandBuffer); / H( ^# `; \7 n$ J# _ getch(); 1 @9 f! o, ~4 H0 X1 K return 0; 3 z; v' r! F$ m# t}

- l" e% h# D2 U0 n u. W" d; y 7 d1 r; j% m# ~ { $ {) `- k4 ]" h4 z' G- @Top & c6 }' ^8 o# Y/ Q" p( } ' W, o6 ] h0 d% [& L 回复人: aiyu33() ( ) 信誉:100 2003-12-17 11:41:24 得分:0 # O$ a$ s, `. L# {1 G# z% {5 _ * ]. ]8 g) q7 J8 I8 N # b2 h% P! h* _' @# O" D4 m" D ' y4 t/ u7 ]4 @& h7 i/ C6 q" yupupupupupupup

# ^' M/ X! m0 I. m8 D9 h % Q- s1 Y& P% \. l Top - l/ \1 d9 V1 }/ x& r2 ]0 D & x& P+ ]1 J8 w% w 回复人: kingcaiyao(AKing) ( ) 信誉:110 2003-12-17 12:53:39 得分:0 9 w& v9 E/ F% `: a' S+ Q' r 5 n% j3 j9 C5 f4 s6 P4 n* I * C6 Q5 w2 k- e3 j7 y% q3 R ; |+ m6 G, [; W7 }3 f7 G* A9 X3 L9 O你开发的这种软件类似于Palm Desktop Software,负责Pocket与PC之间通讯,我建议你最好先写一个驱动,将USB口虚拟成一个串口,然后直接对串口操作会很方便的。我现在做的程序可能和你相似是一个CDMA模块,通过USB口与PC机连接,然后由驱动程序将它虚拟成一个串口,我的工作就是和这个虚拟的串口通讯。

+ u! E; }$ Y5 X, {/ h3 y( } 0 g& o' t/ T/ c! C. H. Z$ X Top 4 i7 j2 P2 x: U0 p3 F0 ] n5 y # t9 v. {0 X8 X0 J" i( M/ ] 回复人: kingcaiyao(AKing) ( ) 信誉:110 2003-12-17 12:56:27 得分:0 ) ]$ l# g+ y0 M6 m, E W" U . f2 _. l8 q O8 _; W) { & g- Z6 q! t) k- b) \ 5 W/ g6 M- b0 k) o& xPocket与PC连接肯定有驱动的,如果驱动程序没有将Pocket虚拟成一个串口,你也可以直接通过设备GUID和设备序列号进行访问,详情你参见我专栏上的一篇文章。当然了,通过虚拟串口来访问设备肯定要方便,简单些。

3 w3 ?4 K% o. v3 `6 Q6 r . a: b& N. i5 f3 M9 X Top : \$ ?2 G: n6 ]7 O 3 N# _) f& z, g* ^3 Z 回复人: aiyu33() ( ) 信誉:100 2003-12-17 13:31:08 得分:0 / v1 T& e2 J5 [' @ 1 Z4 Y4 O( o3 v8 c# V * x1 U/ t S" u4 q: |9 L ; Y4 v6 j* r6 o2 N; c我得这款pocketpc默认只支持使用usb与pc相连的,而且activesync3.7就是使用usb传输数据的。如果我自己写驱动的话,不仅不熟悉而且很可能activesync3.7这个软件就使用不了。我只需要利用它的驱动。你的专栏上的那篇文章我也看了,我就是模仿你的写的代码,但就是到createfile这步就不行了,我的同事是用palm开发类似的程序,也是到这步就行不通了,是不是有其他的原因?# n3 _& b" d& d4 h- o L0 Z 我还想问问如果驱动程序将pocket虚拟成串口,如何查看它的符号名呢?

+ w6 I4 K6 W9 d" O* g# [. J 9 {+ }7 K9 l6 R7 F: g# H4 { 2 C7 Q" h) p1 r" y, f Top / O3 v X7 j" n. m$ x: T% ~ ; A( ?1 \; \/ f4 n# o- a 回复人: kingcaiyao(AKing) ( ) 信誉:110 2003-12-17 16:53:17 得分:0 - ]% t# u3 B N- B8 l" W0 W6 k 1 a# y5 K! F% a# G* V9 \ ) e5 u2 w/ n+ U' \+ s. b/ U7 H $ b9 ^/ O0 ^* [假如将一个USB设备虚拟成串口的话,那么它的符号名可能是COM3,COM4,或COMn,这根据你当前PC机的配置而定 。它的符号名位于注册表中HKEY_LOCAL_MACHINE\CurrentControlSet中,你可以搜索注册表,另外在2000或以上的操作系统中,你可以到HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SerialComm中看到。

( e! b8 F' e* E, Z h # r3 L! t$ R# E/ D6 Y2 ^Top + ?- Y2 }1 K/ l- z2 X" i6 B ' P7 p# z1 ]0 \7 x 回复人: kingcaiyao(AKing) ( ) 信誉:110 2003-12-17 16:55:33 得分:0 3 s, m* B7 g7 ~ 1 ]+ R" T; ]( J* U9 K+ B ) u" X9 E4 K c8 S0 K " @& p/ T' ?. E5 m0 I$ o v1 B5 K我以前在一张贴子中详细回答了如何利用设备序列号和设备GUID来访问该设备,你可以搜索一下CSDN。你所说的CreateFile不能打通设备,你要查一下,你的符号名是否正确,包括设备序列号和设备GUID是否正确,设备GUID你可以从驱动程序的安装向导文件.inf中找到,设备序列号则需要你到注册表中去找。

, J% Q5 ~" Y5 Y7 y* K ! h+ I; {! h) d8 E. j# C1 C& b Top ; j4 U& s; w2 }/ s. A. V" ` * Y6 T5 b8 ~; e1 d0 U6 q1 ~4 T 回复人: gyj_china(透明) ( ) 信誉:98 2003-12-17 18:15:30 得分:90 3 Y* [; Z( H7 @1 t q# L, H; e - j- `' D2 V1 f. s( u! T ! [0 U5 D8 v1 X9 c' E* t + ~9 f; \+ x4 R3 b0 }& x' c" c8 | 没有星星不敢发言:(

0 H; t9 x5 R# u- o0 Q0 S- m # @# K# v1 p7 _/ e Top ) E; V; F8 ?$ x+ A8 k, t1 E ) A6 h$ o; D: I0 v 回复人: aiyu33() ( ) 信誉:100 2003-12-19 18:27:28 得分:0 * N" r, J/ C+ ] . L+ l1 P* a1 \8 _ " i8 b! k+ Z* S) J* }% j 3 U# X) G4 Z+ k8 b& r; d 不好意思,是因为ActiveSync3.7一直在系统服务程序中运行,占用了驱动程序,所以不能打开设备。我删除了ActiveSync3.7后就可以了。


作者: kenneth    时间: 2004-6-2 10:36

大哥太好了

# ]) y7 l% p1 y2 u

正是我想要的

$ Z2 o( C( d, @" u/ G; b$ [% z

謝謝你


作者: 闹市的牧羊人    时间: 2010-8-11 08:35
看不懂         
作者: arvinlai    时间: 2011-8-2 11:25
啊 啊啊 看不懂啊
作者: arvinlai    时间: 2011-8-2 11:25
啊 啊啊 看不懂啊
作者: 幽幽蓝水    时间: 2011-9-19 21:07
啦啦啦 谢谢
作者: www.qqqzq.com    时间: 2011-11-22 06:26
我是刚注册的新手 请各位大哥多关照
9 m! d; Z7 _0 C8 \2 h# J
作者: MichaeLonger    时间: 2014-6-18 21:13
路过。。。
作者: MichaeLonger    时间: 2014-6-18 21:13
水水。。。
作者: hitshijian    时间: 2015-2-3 10:25
赞一个!!!& A, c& U! A! W% k) G

作者: SHERE201506    时间: 2015-8-26 11:00
谢谢楼主
$ P  F, @" d) o6 r# E. G% J
作者: SHERE201506    时间: 2015-8-26 11:00
谢谢楼主, U/ n. e% j0 ]$ ^* _8 l





欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5