数学建模社区-数学中国

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

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

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

& Y$ @6 I% g/ }

我暈,看來這回死定了

1 R/ N9 X; ^4 x' I+ y

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

8 e9 n0 T1 i! i; W$ E

老大救命哦

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

API之打印函数: + e' O7 ?, W3 f+ V2 H" qAbortDoc 取消一份文档的打印 9 n+ k2 v9 ~: x4 G0 [6 c8 AAbortPrinter 删除与一台打印机关联在一起的缓冲文件 # k+ b3 h" v2 h( u* C7 b) z6 K# ^) @ AddForm 为打印机的表单列表添加一个新表单 3 Y5 ^% u% y) R3 Z- \0 CAddJob 用于获取一个有效的路径名,以便用它为作业创建一个后台打印文件。它也会为作业分配一个作业编号 , v( F8 t; g6 g AddMonitor 为系统添加一个打印机监视器 / N9 {/ S, `9 `AddPort 启动“添加端口”对话框,允许用户在系统可用端口列表中加入一个新端口 O! P: z5 [/ B5 i AddPrinter 在系统中添加一台新打印机 ) j, N8 ^- K$ c0 |8 e3 y7 Q AddPrinterConnection 连接指定的打印机 : t# ]! z |4 J* u9 \AddPrinterDriver 为指定的系统添加一个打印驱动程序 . [: e, g+ `0 l: f/ L AddPrintProcessor 为指定的系统添加一个打印处理器 9 S$ K3 \ O c# a! }. n d A AddPrintProvidor 为系统添加一个打印供应商 . `6 m! F4 y2 m: f# @$ y) w& NAdvancedDocumentProperties 启动打印机文档设置对话框 5 Q; I' S$ W/ s1 X9 n ClosePrinter 关闭一个打开的打印机对象 1 ?8 F8 f; [$ o3 U) }4 I ConfigurePort 针对指定的端口,启动一个端口配置对话框 # B* c+ ]1 q% h% X9 MConnectToPrinterDlg 启动连接打印机对话框,用它同访问网络的打印机连接 3 c% W- f2 R V3 P: EDeleteForm 从打印机可用表单列表中删除一个表单 & Z/ @' e; [/ p; H8 ~ ? B2 {% jDeleteMonitor 删除指定的打印监视器 5 _; R A2 {( X% f! q( L4 {DeletePort 启动“删除端口”对话框,允许用户从当前系统删除一个端口 f8 i, ^% d/ ]% D$ k, QDeletePrinter 将指定的打印机标志为从系统中删除 9 b) R, t2 r# ~7 M# pDeletePrinterConnection 删除与指定打印机的连接 & H. p, Y( }* g; g# \) f DeletePrinterDriver 从系统删除一个打印机驱动程序 0 r$ G, ?/ q) k0 q# Z DeletePrintProcessor 从指定系统删除一个打印处理器 ; F" n- w- r {/ A6 a: m, k. a. l2 { DeletePrintProvidor 从系统中删除一个打印供应商 ) _' A2 {8 E4 v- _ DeviceCapabilities 利用这个函数可获得与一个设备的能力有关的信息 + b6 H5 q! y" g' }% r DocumentProperties 打印机配置控制函数 $ W2 M2 H! ]4 {; ^) rEndDocAPI 结束一个成功的打印作业 5 J* U0 }; t8 a$ M% f7 X EndDocPrinter 在后台打印程序的级别指定一个文档的结束 ) r) V# y7 g2 i- f7 B; b6 |( ?9 d: D5 |EndPage 用这个函数完成一个页面的打印,并准备设备场景,以便打印下一个页 " `7 S0 S/ t- k W$ Z EndPagePrinter 指定一个页在打印作业中的结尾 , v% N- M. m0 N/ U: H3 x EnumForms 枚举一台打印机可用的表单 ' `( e- h, \/ l EnumJobs 枚举打印队列中的作业 - v7 [" i" w% \/ k5 YEnumMonitors 枚举可用的打印监视器 . X/ S6 I- u' |; K# f( F+ e EnumPorts 枚举一个系统可用的端口 . x7 y6 O4 \- l EnumPrinterDrivers 枚举指定系统中已安装的打印机驱动程序 ( k3 I% r" D9 MEnumPrinters 枚举系统中安装的打印机 ; `6 Y0 Y9 C) H" E8 a1 @7 E) T EnumPrintProcessorDatatypes 枚举由一个打印处理器支持的数据类型 d' e0 r& m8 LEnumPrintProcessors 枚举系统中可用的打印处理器 4 \1 t6 k: U: U+ E8 z' W0 yEscape 设备控制函数 $ C- F; e) ]$ D4 T1 W5 j5 q' [FindClosePrinterChangeNotification 关闭用FindFirstPrinterChangeNotification函数获取的一个打印机通告对象 ( [1 p) Q7 O/ `" M FindFirstPrinterChangeNotification 创建一个新的改变通告对象,以便我们注意打印机状态的各种变化 + m4 S+ e( f" K7 t- t2 m% ]7 N7 W FindNextPrinterChangeNotification 用这个函数判断触发一次打印机改变通告信号的原因 " v/ W/ W8 p' q* o' y' O$ lFreePrinterNotifyInfo 释放由FindNextPrinterChangeNotification函数分配的一个缓冲区 * m8 a; E* Y( C c' P# b5 W4 B1 R: kGetForm 取得与指定表单有关的信息 3 g" G6 `, F z5 h9 A/ AGetJob 获取与指定作业有关的信息 8 }# t" Q; K- W; D GetPrinter 取得与指定打印机有关的信息 ) r$ |$ i$ g& q0 `# J N+ kGetPrinterData 为打印机设置注册表配置信息 " ?0 c' b: T; i; K9 y GetPrinterDriver 针对指定的打印机,获取与打印机驱动程序有关的信息 5 B2 s7 ?' G3 F2 }- q8 J$ B: M GetPrinterDriverDirectory 判断指定系统中包含了打印机驱动程序的目录是什么 ! S5 d; k, d' E4 y% CGetPrintProcessorDirectory 判断指定系统中包含了打印机处理器驱动程序及文件的目录 5 E( p2 m/ y8 S: ~' W9 P- a OpenPrinter 打开指定的打印机,并获取打印机的句柄 7 Z3 M# @) [) WPrinterMessageBox 在拥有指定打印作业的系统上显示一个打印机出错消息框 9 _/ R2 w" V6 r9 S PrinterProperties 启动打印机属性对话框,以便对打印机进行配置 L* d. d; Z9 n% _* ~% s$ M ReadPrinter 从打印机读入数据 6 Q! P. B4 N$ F2 x3 tResetDC 重设一个设备场景 . j3 T: U& Y% F2 mResetPrinter 改变指定打印机的默认数据类型及文档设置 7 ^6 ?0 Q% V$ f# W3 n1 o0 y ScheduleJob 提交一个要打印的作业 6 w" U; h0 e1 h SetAbortProc 为Windows指定取消函数的地址 4 s, U3 r% A+ w. a5 s' `SetForm 为指定的表单设置信息 ) p% o5 z5 n' d5 i SetJob 对一个打印作业的状态进行控制 & X2 R& F; M1 i' NSetPrinter 对一台打印机的状态进行控制 3 a7 |& @* M# \% F7 X4 ySetPrinterData 设置打印机的注册表配置信息 0 _2 @ b; H. W# D7 kStartDoc 开始一个打印作业 " h1 @6 j4 _" c5 M( R0 D! oStartDocPrinter 在后台打印的级别启动一个新文档 F5 S$ k2 g# z% V H) MStartPage 打印一个新页前要先调用这个函数 $ f$ l+ ~/ ?6 ] StartPagePrinter 在打印作业中指定一个新页的开始 0 y+ N3 W m( N" ^: | WritePrinter 将发送目录中的数据写入打印机 4 x) Z0 O u2 C6 @# N


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

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

主  题: 关于usb通讯方面的问题。请AKing大哥及相关高手来看看,万分感激!!! % e) B, S! A% r- s H作  者: aiyu33 () & @2 U5 p' w/ w B& V 等  级: ' \' s' A% b) Y* V4 t8 Q5 w7 J5 j信 誉 值: 100 , w6 p' p; x. ?2 C' c* a6 X8 h. j5 w所属论坛: C++ Builder Windows SDK/API 3 |( O% i! i( i- {9 b; P问题点数: 100 - O" e; c6 t9 _: N3 m 回复次数: 12 3 x( t+ D5 }, ]7 T 发表时间: 2003-12-16 20:43:13 1 C/ {2 Y5 k" l3 r4 x6 K, M I% P/ H6 {8 T/ _0 V" c ( h A$ `7 v+ x: f

最今我接到了开发pc和pocket pc通过usb口通讯的任务。这两个星期我参考了很多方面的资料,特别是AKing大哥写的一些文章。但我始终没有打通这个关口,我贴出我的代码请AKing大哥看看,现在很急,多谢。 # f" ?( V3 h& J# D0 hpc的os是windows2000professional 5 @" _6 X+ ?2 R! ^0 ^! ]# P- J3 ypocket pc是hp ipaq 2210,os 是pocket pc2003。 $ J. w# l$ L* p* a& `; W0 m/ k) h我装了activesync3.7。我查看过了,这个activesync目录下有pocket pc的驱动程序。pc也能识别。 2 P+ \0 b/ z* |0 _; u4 y下面是我在pc上调用usb的代码。 f) e5 ~1 e7 ^# P" s 下面的代码我能打开hidn类型的usb,但是就是不能打开pocket pc的usb。 9 b6 x \- u# i4 f//classGuid = {25dbce51-6c8f-4a72-8a6d-b54c2b4fc835}% M2 G, b1 c& g3 Z$ g" ?, O7 ^ DEFINE_GUID(GUID_CLASS_PALM, ! v" @& ^4 B1 ]5 d2 s 0x25dbce51, 0x6c8f, 0x4a72, 0x8a, 0x6d, 0xb5, 0x4c, 0x2b, ' ~! j0 j8 i/ p" P3 C 0x4f, 0xc8, 0x35); - V" s | E" S# X$ y8 N5 ~9 TGUID HidGuid = GUID_CLASS_PALM;) O2 B- I* }7 _0 x HANDLE Get_DeviceHandle( GUID* pGuid)$ E# b. A& v2 k) L. y { 3 |. N9 p" c2 S6 C, p" H ' ?# _- x1 G, t6 d0 ^/ m2 ` HDEVINFO info = SetupDiGetClassDevs(pGuid, NULL, NULL, DIGCF_PRESENT | DIGCF_INTERFACEDEVICE); : E$ K7 {1 P+ u' f% \ ) H! D/ G, f# h6 w2 L if(info==INVALID_HANDLE_VALUE) n% m) p# M% q" F { 2 P* j( a! V' X- X, k- w- D: V3 s printf("No HDEVINFO available for this GUID\n");2 C; B2 P$ u S: N' O4 r) r return NULL; , t0 w$ k9 i* Y T3 c. \: _' p }4 A, M+ J' U7 }: w3 \1 x1 j4 ] SP_INTERFACE_DEVICE_DATA ifdata;: E/ s- N1 R5 {' [: |) Q ifdata.cbSize = sizeof(ifdata); - S5 C4 {/ W3 ~ m//0000是我在注册表中找到的序号- z( f5 N0 @( D P if(!SetupDiEnumDeviceInterfaces(info, NULL, pGuid, 0000, &ifdata))' J% X& B( z9 X( H3 b. h {/ T& t H! h/ F$ o& c6 q/ T/ m& ? printf("No SP_INTERFACE_DEVICE_DATA available for this GUID instance %d \n", instance+1); 1 I$ z% r* f0 J% L1 n, C SetupDiDestroyDeviceInfoList(info);) Q, c4 O: G3 t0 X1 L% w: W return NULL;( f% W. J- K# x: u }

// Get size of symbolic link name, D! |5 r# Z0 f9 l# R DWORD ReqLen; . g. E( n, T& ^) | 2 `1 A2 G9 B ~. v SetupDiGetDeviceInterfaceDetail(info, &ifdata, NULL, 0, &ReqLen, NULL); 7 h @3 @+ [# [: A$ ^8 x - ]+ K$ }9 v0 \- N$ l; C PSP_INTERFACE_DEVICE_DETAIL_DATA ifDetail = (PSP_INTERFACE_DEVICE_DETAIL_DATA)(new char[ReqLen]); x% s& l8 u1 G9 t# ~# q0 @ 9 G7 u' h& K% t# J# J if( ifDetail==NULL)0 M9 m: y/ @% n% J {, e7 Q8 d2 d. n' [! @# I% I1 R" d SetupDiDestroyDeviceInfoList(info); + i1 I6 n) o+ G g% b8 l return NULL; . s& C5 U: p4 Q' N3 y! m9 Z. I; m }

// Get symbolic link name 8 R, a) J8 E! z5 n5 z! l ifDetail->cbSize = sizeof(SP_INTERFACE_DEVICE_DETAIL_DATA); $ m3 b; T/ g; X& `+ z ) d* r: a5 u' E2 D% \6 w if( !SetupDiGetDeviceInterfaceDetail(info, &ifdata, ifDetail, ReqLen, NULL, NULL)) 8 X- a. ~) a$ ^( i9 H/ _ { . g" ^, _( d' Y4 L+ ] SetupDiDestroyDeviceInfoList(info);/ |2 n0 {! G, f delete ifDetail;& Q% _/ y) _: X. v k0 {+ E R return NULL; + {, m9 y% b' o$ |9 [' E2 x }

printf("Symbolic link is %s\n",ifDetail->DevicePath);: z; G' a1 K$ K: D% a& C

/*\\?\\usb#vid_03f0&pid_1016#5&1bc41f6c&0&1#{25DBCE51-6C8F-4A72-8A6D-B54C2B4FC835}这是ifDetail->DevicePath的内容*/ , i! I; K4 f' F5 e/ V // Open file 3 D# x3 m9 ]0 q//前面都很正常但就是下面始终得出一个无效的句柄,我也就无法开展下一步的工作. . }' t0 X7 f7 n. ?" x ~( T+ d- [8 { HANDLE pDevice = CreateFile(, L+ ?, _/ ?; H) a7 G ifDetail->DevicePath, 8 i- W; R$ W% K; H$ E7 o |2 L GENERIC_READ | GENERIC_WRITE, 5 ]1 ~1 ^6 `+ `3 d FILE_SHARE_READ | FILE_SHARE_WRITE, ; R* ?/ m5 t$ P2 C5 o8 f NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);9 H/ @1 B& ]& s5 i ' F1 j- W4 ]9 C/ O* } c7 @ if( pDevice==INVALID_HANDLE_VALUE) pDevice = NULL;+ x/ a/ e: j. y+ [: s SetupDiDestroyDeviceInfoList(info); 6 @0 Y) O" X0 ^, \! s! O % j! ~. [& ^/ d2 w3 ?% I1 s2 r return pDevice; / F6 b ]& T4 V7 {, k! c' ?} $ c5 k( X: M8 B7 r) L4 ~$ x y* |再次感谢关注这个问题的人们。

6 ]2 m- i2 x) P* } . q a: J( M. i8 K6 L 0 s" S4 T# j# R. r+ S Q# f W% h& J 回复人: constantine(飘遥的安吉儿) ( ) 信誉:101 2003-12-16 21:23:57 得分:0 8 m8 m! h3 {8 i 3 F$ v1 b) V8 k' |, ? 2 z+ U2 _' w2 S; W 0 E/ v; E7 Y! u study

! e) H4 j1 p6 y6 Z- x6 q) n 6 s9 D) y# J0 c) t9 |* H7 Q Top * q: j8 A4 ~" E/ {. O & {+ o" r" ?4 U0 r# v 回复人: wenyongjie(一个想成为大鸟的小菜鸟) ( ) 信誉:95 2003-12-16 22:28:46 得分:0 ) x% t# y: x0 S& r 8 @7 {, d. h" b % ?, J2 r0 P: S% c1 v5 F! U : P, `! ?8 C, Q) {7 U. i1 M4 c只有学习的份

6 w: R3 M5 C. m2 z / n$ y% \$ Y8 u+ eTop ) v2 R, V4 q' Q8 F 4 w" L+ L3 X' P7 _0 g; E5 a T 回复人: HUANG_JH(保卫钓鱼岛) ( ) 信誉:115 2003-12-17 9:50:41 得分:10 3 w+ T* m7 X: T$ @2 a& l! \ 4 T2 @0 y, E2 c) |8 b: x$ a ) ?5 u; C! k# o5 B, J5 O & Y* A6 D$ Q- k. e. p6 O 不知道有没有用!

/////////////////////////////////////////////////////////////// $ s" W) l3 O% o// HW9911 evaluation board software Rev. 1.06 f; c# j8 R T8 t9 T# | W+ A // program by Liu Ding, Bei Jing HEAD Elec.+ ^5 J5 x+ n. G H- j: ~ // this is the main program for the HW9911 USB device evaluation board1 \5 z" L# J5 q8 L) x" Y // it illustrate the basical read/write process of HW9911 % M3 A/ N" c3 f" g7 c; ?// by three examples: 4 _/ |6 k0 F ~4 W: B6 e# c+ \// 1. write datas to ram on the evaluation board, n, q* y' T+ q/ \& K // 2. read the datas from the ram on the board9 O( ^; e5 |; L9 u // 3. send datas through RS-232 serial prot on the board 4 P9 r* Q* y7 u+ U8 Y6 e+ t8 v// - h, I: F6 h4 E4 E8 \$ O* Y$ F// the whole project are build with MSVC 6.0 4 b1 m2 `- E: X2 ^// and tested on windows 98 platform./ @/ g- s8 P) H) }+ @$ C' I //$ \" I8 ?& A0 S // notes: you can use hyper terminal to reaceive datas form RS232 port 5 c2 V4 ~7 k8 g4 ^! I" v; ~// & e m: {7 y( a* _4 O/ x( X. L9 u// this software are designed by Liu Ding5 C4 J8 s7 l* l" A4 ? // if you meet any problems, pls contact by email: 3 R2 Z: Z+ j/ k" y// hugehard@263.net' G- ~5 \& B) U& A* p* E // or contact HEAD Co. by Tel 86-10-873124977 H0 u+ Z% v( q# z1 a // or by fax: 86-10-87312495 8 x3 O" m1 I8 Q1 g7 G///////////////////////////////////////////////////////////////

#include "hwdll.h" ' S) p# m3 P# P9 R4 L#include "stdafx.h" . X6 g+ v% \# r+ j" L2 ~" X, T#include <stdio.h> 2 }# j7 u2 ]* v5 ]#include <windows.h>5 F# k, G" U' k, r5 o2 [4 w) g; E #include <memory.h> ) c1 K2 m r" E b#include <DEVIOCTL.H> - h; @' n! {" O+ h9 }* R& n#include <stdlib.h>: q8 h9 v X6 A+ N #include <conio.h> ! n! Y7 L: |2 [# n# _#include "hw9911.h" # {- N" ^5 W# S#include "test9911.h"

7 E8 Q9 h+ `# L' R: ~$ l5 j5 {, h3 R int main() . ?' p" {' c- D$ w: e" H7 d{ / L/ l/ u D' D! y' v int hOpen=FALSE; 4 L- ?5 y2 U5 T( t8 }& L" G* h int hCommandLength=32; / A, a" @) u0 [; `/ s3 Y/ S int hDataLength=64;( j6 ~& ]$ r. N& L; t9 U k int i,VertAddr=0,HorAddr=0;/ @. @' _! R: Y- F int addr,TotalLen;( f: S. g2 v0 c i4 E USC StAddrH=0,StAddrL=0; ) g( N# m( Z& F USC DataLenH,DataLenL;6 E$ r% {! B* ~ USC *hDataBuffer,*hCommandBuffer; 1 @: L$ f* ]) d USC ch1=0x61;) A' U$ b8 s8 ^* i4 @4 Z HANDLE hDeviceHandle;+ m3 g M3 N( s" F: ^0 ` ( k' y. D1 c* i, s, o' T9 c& o- g printf("************************************************\n");6 j6 u; Y( p/ K+ o5 b0 `# P printf("*******HW9911 USB DEVELOPMENT BOARD*************\n");) L+ ~& k7 Q7 X6 o printf("************************************************\n\n");& L3 l6 p4 Y+ {( S. e5 a printf("now press any key to open board\n"); 3 ~# S0 B0 y. @/ O- u getch();

/********* call hDeviceOpen in hwdll.dll to open the board***/ " Q1 |( X U: h# n( S//hOpenDevice 说明:, o/ m7 b" ?, r/ f9 f. T; v) N) Y9 [ // BOOL hOpenDevice(HANDLE *DeviceHandle) 7 L# X& s5 Z0 |' r( D// 作用:打开设备 ) L5 g1 W- `7 y. m6 X7 n9 Y; a// 参数说明:& n7 q3 {/ p3 u // DeviceHandle:设备句柄& T" g* o, g m7 F- O3 b" L/ z // 返回值: 2 k; z3 e0 r- z* O7 `) q' l// 设备打开成功返回 TRUE,失败则返回FALSE8 U' {; W! [5 y. S# @" m. t if( (hOpen = hOpenDevice( &hDeviceHandle ))==FALSE) " h' b& \8 E0 T' d, `. I6 ]$ @ { ( \+ ~2 ]* v5 o8 x8 g printf("can't open device\n"); 1 V( ^) Q7 L& m! j/ m% f0 [* M printf("press any key to exit\n"); " v4 n# x ?( c1 c7 h1 b, z getch();& R7 I- e0 d0 u' _, q return 0; ; [' E" A9 n# @. d } 5 W0 [* |) _/ { else 3 K9 N# i0 a+ f- P6 p0 A* | printf("\nCongratulations! device opened!\n\n");

/****** build and send command **********/ # y8 v' v* E8 I) v0 V3 n5 b, w printf("how many bytes do you want to access?"); 0 y+ u, q2 V7 v, H! [' j; C# } scanf("%x",&TotalLen); 6 M! Q. i/ D+ g while(TotalLen > 0x7fff) * N6 Y: p' h' Y, [ { 4 w6 X2 T6 \4 y$ Y5 w* s printf("pls input a hex data less than 08000\n");# k4 U( Y; f, D/ Y scanf("%x",&TotalLen); * ~1 S# A, Z Y; g# a, F } ; q) L" |7 t! A" v: E6 p1 ~* U DataLenH=(USC)(TotalLen/0x100); //data length high bytes L# g3 O" M3 {, V6 e+ z DataLenL=(USC)(TotalLen%0x100); //data length low bytes

printf("************************************************\n");7 X& U6 @4 k5 L- n. H( W printf("now program will write datas to ram on board\n");0 B8 J. T4 }$ @' L m. `6 p6 c0 p9 l printf("total bytes of datas is %x\n",TotalLen);9 T% E- D) y2 ]. |: i0 } printf("press any key to continue\n\n"); , X# l) o7 A5 J/ k. W getch();! Q: g* K: t2 H9 X /*****************************************************************3 ~! p* o0 ?, D0 R$ X now will build a write command packet 8 X# `, |4 i0 O3 C! P) s/ e with the first byte is 'w'.) o2 |, \2 \! u6 s and the following bytes are: 6 i: g4 S# i$ k- h* T; ? start ram address byte high, start ram address byte low, & M; j5 P0 ?7 Q datalength byte high, data length byte low.7 I; c% r+ A( j this packet will send to device through WritePipe1,, a' j+ n4 e& Y( D1 K which is endpoint 2 of HW9911./ f+ h4 g$ H0 K4 C! n% u# h when the device receive this command packet,& f* G3 i# [+ F V it will write TotalLen bytes data to Ram on the board7 D8 v0 _8 `) l ******************************************************************/

+ `; F, ~* Y0 } hCommandBuffer=(USC *)malloc(hCommandLength); 8 W( O7 b, V( h4 F5 {! ~2 F hDataBuffer=(USC *)malloc(hDataLength); " S% ^) a2 B; l* T hCommandBuffer[0] = 'w'; //read command$ i ~" I) P; j% \5 v' K8 o hCommandBuffer[1] = StAddrH; % f5 ^& W. Q! v hCommandBuffer[2] = StAddrL; + d m' A' M3 x: E hCommandBuffer[3] = DataLenH;2 L* X3 ^) A1 |7 [. s1 p7 d: b hCommandBuffer[4] = DataLenL;

/* call hUSBIO() in hwdll.dll to send command packet to device*/$ i# w* q1 z, G! [, q! b // hUSBIO 说明:( ]7 {( n% h# h7 U // BOOL hOpenDevice(HANDLE *DeviceHandle,7 k" {6 n. i, q3 u5 K // unsigned char *IOBuffer,, m( J5 x% C ~ // int BufferLength,7 e) V1 m2 r2 S5 u( |* o // int PipeNumber, 9 s/ ^6 W, |& m2 h( c! M1 I& j. [// int Action)5 H& G8 G1 z7 L // 作用:设备读写 7 p* l9 `7 D' w) _// 参数说明:- W/ | O# @$ @4 X! p3 g. y# D" U3 o! P( v // DeviceHandle:设备句柄3 Z+ B v9 z8 U$ G0 }6 v; n7 [ // IOBuffer: 指向要传送的数据指针# s( x% }4 h0 k4 E" ? // BufferLength: 数据包长度 i9 m3 S& f: u+ r# K // 对于发送缓存1、2和接收缓存1、2,BufferLength必须小于或等于32 # n2 H1 Y/ Z( I( r. v" j# u// 对于发送缓存3和接收缓存3,BufferLength必须小于或等于64. ^) c$ ~9 h ~- o // PipeNumber: 通道号3 d( E1 H( T& B) h. R7 j% g // 发送缓存1:PipeNumber=0; 8 I2 u7 ~! K7 H5 ~3 P// 接收缓存1:PipeNumber=1;9 \# o, q1 {0 N% `% G! F // 发送缓存3:PipeNumber=2;3 K0 k, r Z8 f3 e# s- o, K/ s // 接收缓存3:PipeNumber=3; u$ f3 \: E( o8 a; ^1 _! ?6 F& X // Action: 读写标志。TRUE代表从设备读数据到主机! p( m: q& L/ _6 G$ y2 W // FALSE代表从主机发送数据到设备 : m/ z: [; u( {// 操作接收缓存,Action必须为FALSE 0 {8 q# [9 |# r6 c: Q- X) |// 操作发送缓存,Action必须为TRUE : ] e; J) w( `6 ]// 返回值:3 K f; f& O7 ?9 L // 操作成功返回TRUE,失败返回FALSE

if ( hUSBIO( &hDeviceHandle, 1 }6 g' N4 `8 G6 k' v! ?. E7 j# W hCommandBuffer,' {' O: L# e3 q8 f; \% p hCommandLength,) I) O9 H) A. A! g- f6 P hWritePipe1,- J" Q8 m4 f# R; u FALSE) == TRUE) * D* V: i4 ^) {# I! u7 Q e3 s5 X K {5 z8 G1 i/ e, v3 P& Q% t printf("command 'w' writed to board\n");* f0 O5 H, `" g2 J printf("now press any key to write datas to ram\n");" h- M8 S8 s; G D$ x( E% y) {/ ` getch();8 H, \8 _" y( Q/ a( Y }) U2 _; z% b7 B' I' o! p else 0 e) j3 o, d4 h9 N printf("data can't write to device\n");

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

printf(" ");! @# J; t7 S& D/ K* @5 `: Q/ V for(VertAddr=0;VertAddr<=0xf;VertAddr++) $ ^2 Z3 y7 }6 X% @( h; r printf("%02x ",VertAddr); - E( [2 X5 x& H# V printf("\n"); 8 z+ s2 a: I1 w4 X N* S2 E( g addr=0;* o. X. ^# A1 O- q+ o( Z while (addr<TotalLen) & B+ _1 Y7 M, ^- s: V$ s( M) Y {( B7 Q' I; t; g; t0 H) F if (addr+hDataLength > TotalLen) # @, M8 \% H2 [; r2 w9 y' E hDataLength = TotalLen-addr; @! l/ `7 E$ l# s, j1 i for(i=0;i<hDataLength;i++)* K0 h, y. \, @% A8 J {, u0 v+ G2 G0 M! k. T( j! ^8 t hDataBuffer=ch1++; ; U5 G+ v9 |, p& u if (ch1 > 0x80) & K4 a% u+ f6 @( z+ S9 @) a/ Y ch1 = 0x61; v/ @4 H o f* S } 5 e C, z- | C0 R4 q% g: m/* call hUSBIO to write datas to write pipe3, which 7 {3 a; z- O1 O* M: V0 N is endoint 6 of HW9911*/

if ( hUSBIO( &hDeviceHandle, * k4 B$ C0 \: s: \ hDataBuffer, * Q0 N' c; o1 u6 c! O/ v5 g x hDataLength,- ]- J8 o/ k6 w# Q) d: R4 Z& u hWritePipe3, , M! R. Y0 o$ _- q4 x FALSE) == TRUE) //FALSE means Write operate7 p$ Y" `. }" u {4 ] T9 @5 ~. o/ H5 Y! p! | for(i=0;i<hDataLength;i++)3 x7 a/ J# p( g- g) \ {0 S( _# p3 x6 T /* print format control */ : f( x5 F" ^: | X0 p% V if(i % 16 == 0) ; ~* p1 L. p4 Z8 Z' ~7 V4 K3 p! Q! Z { ! j d, M- w2 v( h1 p6 ~( m0 c9 S printf("\n%04x ",HorAddr); 9 e0 I' h/ [6 M/ S* H3 z HorAddr=HorAddr+16; # o- ~) f& A2 I6 T7 B, N } " F4 v/ O5 f/ P( i5 A printf("%02x ",(USC)hDataBuffer); ' J: M4 Q* d; a } ' x! x" n. d& s _+ E) E addr=addr+hDataLength;8 [/ o6 G& z( p6 g/ v }$ @' W4 B" g4 E7 ^3 `4 C else - F$ h3 C1 [3 a" v: \: d {5 D7 T. I0 J+ u1 ^. z, | printf("can't write to board\n");9 _' ?9 u$ a3 \5 R exit(0);0 S' L1 W1 a! k } ! F9 A5 Q( ^. s4 ~/ x0 j } 9 Z. O0 U# Z: W! d+ K+ T printf("\n\nTotal%x bytes write to ram OK\n\n",TotalLen);

1 @& n$ \$ q1 u( a5 u! Y* C# B9 i 1 Z+ v% r% I: a; j5 _0 K( ] Top ) c) o4 u, W# {. p0 q- R$ p- z. ^ * {8 v7 F9 D7 r+ U* A 回复人: HUANG_JH(保卫钓鱼岛) ( ) 信誉:115 2003-12-17 9:50:51 得分:0 1 n6 q3 j4 G# z/ e / b8 M! V" H1 \# [ * }6 y; [5 C4 g6 W4 f, ?3 }( @2 `

/*****************************************************************8 H' M8 ^8 U0 F. v' Q now will build a read command packet ; I6 g+ |1 r; e% E with the first byte is 'R'.( I& \5 \+ H& v and the following bytes are: 2 n2 b3 P. G) M2 L d) ]+ L start ram address byte high, start ram address byte low, # `. c- \6 h" ?. j- s' N datalength byte high, data length byte low. 3 R7 Y( ^6 r1 d& g" g+ ]1 y this packet will send to device through WritePipe1,* \: y/ M4 L$ s5 }( j, v which is endpoint 2 of HW9911. ( i% O& a" Q6 M9 d* E c9 F4 E when the device receive this command packet, w. h* N( E% o it will read TotalLen bytes data from Ram on the board + G. E3 S: n6 j******************************************************************/

printf("************************************************\n"); 1 W$ U" G' x+ Q: a5 e printf("now program will read datas from ram on board\n"); # j3 ?' r3 ?" z3 _; J2 g! ]# `- G4 C3 W printf("total bytes of datas is %x\n",TotalLen);7 t1 w8 y; Y6 f1 w0 Z printf("press any key to continue\n\n");7 \& w# k( d. f1 _9 Q5 d1 j+ f! o$ Q getch();, P. V4 }& P% h$ [ hDataLength=64;$ B# Y0 i( I9 a" t hCommandBuffer[0] = 'r'; //read command / @/ E5 {! ` m hCommandBuffer[1] = StAddrH; ; r1 |2 a b8 t/ W hCommandBuffer[2] = StAddrL; 4 h! Z$ c" c( [7 ~4 s- X# t0 Q hCommandBuffer[3] = DataLenH;4 Y$ ?; m# n# a! `8 z hCommandBuffer[4] = DataLenL; 8 P* O- k- C! B @/* call hUSBIO to send packet */ 1 Y3 x) | F# L4 N# k. N if ( hUSBIO( &hDeviceHandle,7 e% x% y8 x3 l4 m hCommandBuffer," _4 K4 E6 {9 o2 a2 Y5 ^ hCommandLength,- e0 ]/ n' E: ?7 E* B! q) z: M hWritePipe1, 5 v- `4 F3 X% }- S4 \/ v3 _4 B% I FALSE) == TRUE): u2 h R5 Q" _5 n {. z( E3 q# K. G: [4 q1 l/ J6 |( H printf("command 'r' writed to board\n");0 l; d3 Z. T- Y* t$ H$ _( G printf("now press any key to read datas from ram\n\n"); ( M) S# ]7 P5 j getch();+ i- ^# f( Z2 }/ n, i' ^ }, h- e0 d9 x+ W else6 E6 `8 X, |6 s; \. ~# _ printf("data can't write to device\n");

/******** read ram data form board **********/( x7 n0 u0 f. d% n; M( k! O printf(" "); 4 f7 \ D K5 D. | for(VertAddr=0;VertAddr<=0xf;VertAddr++) 0 e& [3 T. v2 V printf("%02x ",VertAddr); 7 C* S+ X2 l. m7 E5 y2 a- d+ \ printf("\n");/ P, c9 Z% y A6 s, P addr=0;- I% t$ w1 l% j$ m HorAddr=0; , d( [- A# c5 l- ^+ i while (addr<TotalLen) " `9 F: ^+ H" O6 z6 |2 B( X {1 O; t O o2 n' k if (addr+hDataLength > TotalLen) & L5 M+ u1 E" h% t+ b hDataLength = TotalLen-addr; ! u7 W7 c/ Y7 [1 o5 C/* call hUSBIO to read datas from board */ : S2 j: {8 v- N$ t* j0 ?/ t if ( hUSBIO( &hDeviceHandle,& @' j2 a$ y5 J c& a1 p9 r hDataBuffer,8 t4 }/ B' I0 j, J" ?, `9 v hDataLength,5 i. @ }3 S$ ]$ q1 ^3 R hReadPipe3, 1 q" `5 p7 S* K7 t: q( d, P6 p TRUE) == TRUE) //TRUE means Read Operate 4 L- b- z8 Z& j8 ?$ a7 m { % q b- O5 Z+ c for(i=0;i<hDataLength;i++) % U* A4 Z- B7 C3 X {- F; z7 e# d7 u& c& j: \9 W /* print format control */. R) W7 g& Z& X) w/ f+ D0 n if(i % 16 == 0) ) u6 q* J$ _4 ^5 T& r {9 ?- O# k% E+ Z( n0 H- Y printf("\n%04x ",HorAddr);; g9 r' q8 N8 v HorAddr=HorAddr+16; 4 g/ ~, ^% K$ i( } }5 P5 d7 @) d9 e1 G% u3 e printf("%02x ",(USC)hDataBuffer);, o1 n+ v% ~8 D/ g6 G0 s: p8 S } @0 r9 {; ]; K; n+ B9 ~3 w addr=addr+hDataLength; . t. u$ S7 c M: B( j } # j6 I1 T. R5 b4 Y else+ c0 A2 V/ D) a1 \& d7 X, e- l { 0 Z7 k( {# Z2 U printf("can't read from board\n");1 V1 {6 g& c5 U7 m9 m0 {: o5 Y exit(0);6 N, ^! R; z3 Y. s9 w! ?& d } 9 U0 y/ ~) [. e/ Q% Q. h. }( i. M }5 O `% V& e z: b8 r2 Z9 d printf("\n\n"); g. F. b% R$ D0 Q: X printf("%x bytes read from ram OK\n\n",TotalLen);

/*****************************************************/; N/ B8 k8 B* z /* process rs232 test */ " |) {2 O, ?, F- E& p ?5 O/* the first byte in this packet is command 's' *// g6 h) B$ [" z9 ^+ d$ Z/ { /* and the following 2 bytes are used to set */8 l3 W# T( x. }3 Y* a/ L' k /* the baud rate of 8051 */5 i9 Q0 V0 t0 e) O1 Z9 L# H /* they will be write to TH1 and TL1 respectively*/" W. I/ m5 M2 V) |5 l /* the following bytes are datas will be */' n) {+ k7 ?) k5 D+ ~; M /* send through RS232 serial poart */0 P5 L3 ~' c) N: `6 v A) w /*****************************************************/8 n3 g, A4 u! o printf("\npress any key to process RS232 Test\n"); 4 i% |" l/ p4 U" ? getch();8 }. i" z0 ^) l$ Q u8 c3 G3 U P* u+ G: @ USC TH1,TL1;4 q6 @2 S4 K1 `1 h: A* T char hStr[30]; b/ @( U5 @4 I j7 w6 \' R* |8 h$ P: O TH1=(USC)(BD9600/0x100); 2 w" l) f3 m" Q. c6 t. i( Z5 n) \ TL1=(USC)(BD9600%0x100);- T$ E4 ]$ @3 d! c9 H8 t hCommandBuffer[0] = 's'; //read command 2 U" c& O, z6 D% S, w7 D hCommandBuffer[1] = TH1; . d' o+ F) H, K$ w3 h hCommandBuffer[2] = TL1; //start address is 0x0000

strcpy(hStr, "Hi, dear HW9911 consumers! ");) G& {% b, p- ?2 X printf("Hi, dear HW9911 consumers! ");( M0 b3 I2 v2 [( B memcpy(&(hCommandBuffer[3]),hStr,27);

if ( hUSBIO( &hDeviceHandle, 2 H9 K' m, @/ S0 W2 ~ hCommandBuffer, # ]6 w: R" V& T$ o3 o" A 30, . z' G3 h; E3 W* Y hWritePipe1, 9 R) E) }( p" h- _: c1 s C2 d FALSE) == FALSE) + a; |- I( p3 U- `+ x: J! | {4 u0 V5 `* Y) D7 h A! g7 d printf("can't write datas to RS232\n"); 8 z& Z, R( d; U exit(0);9 }( ~+ ]- H3 l5 m; D7 W: r" @ }

strcpy(hStr, "I'm HW9911 Evaluation Board, "); 9 N. n7 c- O: n3 \0 ` R7 K4 s0 `" d printf("I'm HW9911 Evaluation Board, ");* u. x' m, N. ^5 U( Z+ | memcpy(&(hCommandBuffer[3]),hStr,29); & T, }: J; j4 D. ^ `; r5 U( C 1 R' y% ], Z! ^2 w% G* k2 a# P if ( hUSBIO( &hDeviceHandle, & W! p) [# g: E" F hCommandBuffer, 0 I7 ~- j/ P) O9 p# o 32, # ?$ ^# X& O, I* ?+ W hWritePipe1, 8 `1 V5 }+ }) \* Z k- D. e! r FALSE) == FALSE) 2 ]+ K7 y; P; F8 a {7 L& Q) N8 h% b; l1 `: V printf("can't write datas to RS232\n"); 0 v& D0 c; H& y* v& V# |5 X exit(0); ; t9 b4 A* ?% }5 v }

strcpy(hStr, "thanks for purchasing me, "); ! p e1 b# r! `- {* }; m$ p: m printf("thanks for purchasing me, "); 4 s* ~" Q8 e4 E2 S; U$ u memcpy(&(hCommandBuffer[3]),hStr,26);# I* J+ T4 n; d5 e8 z) Z1 Z6 K \% g. ?( l' q5 a. {3 K if ( hUSBIO( &hDeviceHandle,2 Q" W( l, j3 o hCommandBuffer,1 S* ^5 M$ i. N 29,7 g# |. F, R# b$ J hWritePipe1,. R- @6 I. A# H) X4 K FALSE) == FALSE) 7 {/ X- C% M9 _% A- s! r {" l5 T# I, y! O; i printf("can't write datas to RS232\n"); @9 Y0 z8 \1 l/ d9 Q: o exit(0); " t$ Q! k( l% l7 u$ L& ] } 9 N T' u6 J( z 9 [" g; B4 s/ S# { strcpy(hStr, "If you meet some problems, "); Z) ^, N- K6 @- I1 h% `. N printf(hStr, "If you meet some problems, ");: ^+ I- k' u6 K memcpy(&(hCommandBuffer[3]),hStr,27); 3 I/ k' \6 U$ v- ? 5 V/ G9 J' L' p& `) `, G* K if ( hUSBIO( &hDeviceHandle,7 P0 l/ @" G8 d3 O8 s4 a hCommandBuffer,+ x3 z/ U9 [ P k- Q$ k 30, : |" s, f& ^! s4 R o! U3 L! H hWritePipe1,( _! D: F2 |& b' n FALSE) == FALSE)/ o* p/ p% h2 W, s* ~ { ( U; q) N+ e3 V0 p6 S' m( M printf("can't write datas to RS232\n");; _3 |2 z+ @# u& ~5 a exit(0); + U* s+ D. B, ]) |+ Q, W }

strcpy(hStr, "pls contact my designer "); 2 W4 Q; E1 b, [: V1 I1 i' C. F7 \ printf("pls contact my designer ");/ z( d* T+ S/ w' X$ Y0 |! G+ @ memcpy(&(hCommandBuffer[3]),hStr,24);. \3 g; t0 T' n5 E' ~; M + f7 Z! n/ l9 P5 } if ( hUSBIO( &hDeviceHandle, ) f2 z! u; k( L. n. a2 N hCommandBuffer,* @8 x2 ^9 w$ ~ 27, 6 f6 a- \, ~% i& Y/ |0 @0 Z- z) ^" X hWritePipe1,/ c" v; {$ \. K* H; ~0 _4 t5 Q" U FALSE) == FALSE) ! K6 x" C- Y' w, k1 ] {/ `$ I$ @. y: M* G$ E8 T! J/ k printf("can't write datas to RS232\n");% y4 G" ~5 I5 c, ~ }" K exit(0); 9 N+ [7 o. O4 _7 n' r }

strcpy(hStr, "by email: hugehard@263.net.");# \" u/ |" F; ]- N printf("by email: hugehard@263.net.\n"); % w) B Y+ X2 h3 @+ T9 R memcpy(&(hCommandBuffer[3]),hStr,27); ; F1 u# T0 t& h7 O2 a( `8 \7 m. Q % ^4 C: h6 K) \( O" @3 T8 f( M# G if ( hUSBIO( &hDeviceHandle,6 B: D3 @) Y( E; y9 D7 A0 g hCommandBuffer, 5 e7 J$ z% a( ?, D% B+ a5 v. ?6 v9 }5 e 30,6 G4 h; }" H4 w7 Q4 H hWritePipe1,, o0 w7 V$ J. P, b; ^' c! ~' z FALSE) == FALSE)7 a$ O/ c9 d7 H/ z; _" T {1 w1 R) n% N. Y8 z- r; }' y8 @; K printf("can't write datas to RS232\n"); 8 g; s# K- O) N" O+ u- ?( C: Y exit(0); ( c ], q; ?; k; g: T' X+ w }% _. y/ n) E; R0 R; J /********* call hDeviceOpen in hwdll.dll to open the board***/ ! t4 m! S2 Q% \' {, M8 I" ^// hCloseDevice 说明:5 }& D* L7 K% @; S b6 r // BOOL hCloseDevice(HANDLE *DeviceHandle)$ Z% z" V) M3 k9 ]% m6 c P+ t& J3 ` // 作用:关闭设备' K9 U7 y7 u+ i' s // 参数说明: / \% l1 H, u4 w// DeviceHandle:设备句柄 $ T8 n. o S9 k// 返回值:+ p$ z" ]3 }5 J2 }7 L // 设备关闭成功返回 TRUE,失败则返回FALSE, p- [2 Q) C' g6 A/ q J if( (hOpen = hCloseDevice( &hDeviceHandle ))==FALSE). S" e. ~/ Y1 B {. Q! \* ?( @) O6 |! W2 W+ J printf("can't open device\n");5 R, D0 D( l4 V# N1 v printf("press any key to exit\n"); / q5 E( T/ z4 h- K getch(); ( u& W3 a( f5 t& u return 0;$ k0 X8 q+ Z# B } / b' b0 w; ] q/ ]. e- Y6 d f else " ^' F! D% a2 f8 b- \1 `& b2 } printf("device closed\n");

printf("press any key to exit the program\n");) |/ o- {! X# C. R' {4 X; G Z free(hDataBuffer);: i5 M( k3 I5 {: q+ A6 L free(hCommandBuffer); - }3 X4 h6 H+ Y$ s9 K0 p getch(); & }+ E* v R7 u6 C' H7 y return 0;+ \& S" l5 Z# ? }

# i4 i4 b# {! ?8 |% \) R " P7 f: m" ^. s$ T# y! j* o - @- U6 H6 ~3 N0 e ]' @( T7 [Top . p+ G8 J3 T& R q" d" [! Y* K$ U : A5 A! E: W! `, m 回复人: aiyu33() ( ) 信誉:100 2003-12-17 11:41:24 得分:0 5 \% U; G( h! B+ _2 ^ . T! y3 Z7 i& D, x7 B4 a' v6 Z% J. v % D4 ~0 ^1 b# \3 a7 `) B 6 F$ X9 P: J- nupupupupupupup

) [7 I' C+ R: m/ z! z$ u7 o! f + l( D1 n: u" s) Z Top + R+ | H. F# K + u# M" H. }; `! b* | 回复人: kingcaiyao(AKing) ( ) 信誉:110 2003-12-17 12:53:39 得分:0 4 q( F7 G' i" j# O$ w- _8 e , Y6 `2 M- Y. r 9 K/ F6 L# i% _! H/ m ' k5 ^) ^ p+ u& [/ N! E你开发的这种软件类似于Palm Desktop Software,负责Pocket与PC之间通讯,我建议你最好先写一个驱动,将USB口虚拟成一个串口,然后直接对串口操作会很方便的。我现在做的程序可能和你相似是一个CDMA模块,通过USB口与PC机连接,然后由驱动程序将它虚拟成一个串口,我的工作就是和这个虚拟的串口通讯。

" X. G2 S. _; y- @ + W/ g" Z0 a9 ]8 e6 U" ^* x7 \ Top ) F8 ?6 Q1 X; Z0 G2 B# Y! ` . y' a5 `, g: e. } `7 T) e+ M 回复人: kingcaiyao(AKing) ( ) 信誉:110 2003-12-17 12:56:27 得分:0 . v4 ? [$ e: s+ B. w " |% n$ ~; a$ S, o6 Z( F & @9 e; M7 `; I+ ] b % o3 H5 h- f" ?& z( R' ^$ S pPocket与PC连接肯定有驱动的,如果驱动程序没有将Pocket虚拟成一个串口,你也可以直接通过设备GUID和设备序列号进行访问,详情你参见我专栏上的一篇文章。当然了,通过虚拟串口来访问设备肯定要方便,简单些。

% H1 C6 N2 h! f7 g5 W3 r/ k3 h/ A7 h 0 p, x! B% ]$ ?4 n8 U Top 2 f) j' g: e' j' g0 W2 j i6 {! \) r 0 W8 h" T; v5 ?# ?2 ^* p 回复人: aiyu33() ( ) 信誉:100 2003-12-17 13:31:08 得分:0 : F# c' [, k, y! r' \1 o+ q 7 O9 x; a9 c7 x 3 H( B5 W. F3 y% |7 V/ T : l7 ]7 I" Q! e8 a8 _" P; j! ]4 C我得这款pocketpc默认只支持使用usb与pc相连的,而且activesync3.7就是使用usb传输数据的。如果我自己写驱动的话,不仅不熟悉而且很可能activesync3.7这个软件就使用不了。我只需要利用它的驱动。你的专栏上的那篇文章我也看了,我就是模仿你的写的代码,但就是到createfile这步就不行了,我的同事是用palm开发类似的程序,也是到这步就行不通了,是不是有其他的原因?2 U. n7 t, G8 S- B! q$ [' g' w 我还想问问如果驱动程序将pocket虚拟成串口,如何查看它的符号名呢?

9 Q: [- S) V) N' c! T: t - C9 ~) a+ O) e- S' u! y / B, i @4 [7 I; A2 K3 S$ m Top k+ p: l3 K/ q9 Z3 k, Q3 f" V 0 r( n1 E8 _0 z; C9 @. M% J 回复人: kingcaiyao(AKing) ( ) 信誉:110 2003-12-17 16:53:17 得分:0 / B4 `4 b, v9 M) ]% x2 i( d' z " c2 a% Q4 Z5 g* `% V$ o / y6 k+ L7 V Y' a! z* `; P : V) P9 J& |# W4 E+ x6 g 假如将一个USB设备虚拟成串口的话,那么它的符号名可能是COM3,COM4,或COMn,这根据你当前PC机的配置而定 。它的符号名位于注册表中HKEY_LOCAL_MACHINE\CurrentControlSet中,你可以搜索注册表,另外在2000或以上的操作系统中,你可以到HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SerialComm中看到。

4 \- J: A- e" H3 V 8 z- l2 x0 k! h4 e y* `Top & i& Q9 j6 j. E3 t% _& s5 F; B. L 0 z. q9 u# s" Y# k 回复人: kingcaiyao(AKing) ( ) 信誉:110 2003-12-17 16:55:33 得分:0 * h: u x, ?. Z- G' ~6 x 9 l- c$ U7 ~7 `: g# m* p w6 y2 r' `3 i3 R8 {, D 1 }0 M& W+ z/ t) |5 q+ M( s我以前在一张贴子中详细回答了如何利用设备序列号和设备GUID来访问该设备,你可以搜索一下CSDN。你所说的CreateFile不能打通设备,你要查一下,你的符号名是否正确,包括设备序列号和设备GUID是否正确,设备GUID你可以从驱动程序的安装向导文件.inf中找到,设备序列号则需要你到注册表中去找。

U1 u9 R& _# }7 R! p) E9 y H3 N3 w ( F' v4 Z# O6 E/ A0 T Top 2 n5 W5 V4 {1 m: n. a, f& { n( p' R, e( ?- U0 @6 |: @ 回复人: gyj_china(透明) ( ) 信誉:98 2003-12-17 18:15:30 得分:90 7 z1 `+ v; K8 y+ r: Z" h9 u% e / S7 h& s! J! ]% W% O 7 O% w- H3 I6 X7 |; [7 k3 ~: X) ? 7 f1 c2 W k# j5 C9 u 没有星星不敢发言:(

* E" n. Q0 M6 V2 M$ r0 L" z# B ( y, F& |2 A& M! @% I) C' h. ITop & s1 c; R$ m* [2 t$ Z # v! W2 L& p1 }- Y- [. k 回复人: aiyu33() ( ) 信誉:100 2003-12-19 18:27:28 得分:0 % g2 o( J1 G+ m- h ; b6 E! |$ ]# G X % E" o: Y4 P B" |) q 2 _! `& J8 }- \7 o1 p不好意思,是因为ActiveSync3.7一直在系统服务程序中运行,占用了驱动程序,所以不能打开设备。我删除了ActiveSync3.7后就可以了。


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

大哥太好了

8 k, w) w d: b1 ^

正是我想要的

) z; W& J: g: M: N+ E( f

謝謝你


作者: 闹市的牧羊人    时间: 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 E7 X9 L% r- H9 D. G3 F
作者: MichaeLonger    时间: 2014-6-18 21:13
路过。。。
作者: MichaeLonger    时间: 2014-6-18 21:13
水水。。。
作者: hitshijian    时间: 2015-2-3 10:25
赞一个!!!
2 q- d, Q0 d7 S9 S
作者: SHERE201506    时间: 2015-8-26 11:00
谢谢楼主
, D9 {0 i* M2 Q) C1 d
作者: SHERE201506    时间: 2015-8-26 11:00
谢谢楼主
; T( U! D: }4 m- M7 n$ _4 }




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