QQ登录

只需要一步,快速开始

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

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

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

10

主题

1

听众

98

积分

升级  97.89%

该用户从未签到

新人进步奖

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

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

' [7 U9 \! N) K8 N1 C$ E1 u

我暈,看來這回死定了

9 p; g* ~, Y; _5 F. W

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

# d8 Z4 N9 g' H

老大救命哦

[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之打印函数:! h1 L! ]( y% R+ {- d _6 D# A1 j J0 [ AbortDoc 取消一份文档的打印 & d/ Q6 F5 \1 G* j7 F6 [# r7 j AbortPrinter 删除与一台打印机关联在一起的缓冲文件 ' W9 L4 a, k$ [" JAddForm 为打印机的表单列表添加一个新表单 " Y, r: K. W9 \2 [2 @0 KAddJob 用于获取一个有效的路径名,以便用它为作业创建一个后台打印文件。它也会为作业分配一个作业编号 1 j% Q) P- v$ n& ? AddMonitor 为系统添加一个打印机监视器 ; @) L7 c6 t" bAddPort 启动“添加端口”对话框,允许用户在系统可用端口列表中加入一个新端口 ' F7 x, r- G* v& Z; y AddPrinter 在系统中添加一台新打印机 3 }4 y3 l. v0 t' ], m2 Y, r3 g AddPrinterConnection 连接指定的打印机 % { R* C+ F7 B* \7 |+ V( v AddPrinterDriver 为指定的系统添加一个打印驱动程序 ( X R5 ^) a2 b9 t% K1 `: t+ U! y AddPrintProcessor 为指定的系统添加一个打印处理器 & {+ I* ?. C" G' h8 P+ P AddPrintProvidor 为系统添加一个打印供应商 ( K- t6 o0 @5 p! p/ c l0 KAdvancedDocumentProperties 启动打印机文档设置对话框 9 V* ^+ P9 e9 h* |9 `2 a J* i) j' qClosePrinter 关闭一个打开的打印机对象 0 j5 ]" H3 D# S& a: YConfigurePort 针对指定的端口,启动一个端口配置对话框 & g3 W$ t6 {! }; y$ H0 k# |% fConnectToPrinterDlg 启动连接打印机对话框,用它同访问网络的打印机连接 3 ~6 i' \5 `! n) _/ a; X DeleteForm 从打印机可用表单列表中删除一个表单 $ A% U) D0 W: M) i# F$ N) V( ? n DeleteMonitor 删除指定的打印监视器 9 \7 \8 l4 B$ I; c, i# L DeletePort 启动“删除端口”对话框,允许用户从当前系统删除一个端口 1 v7 V4 P1 U6 L0 H# Y) B1 [3 ~5 L DeletePrinter 将指定的打印机标志为从系统中删除 6 k) \" {/ q; T% i4 hDeletePrinterConnection 删除与指定打印机的连接 : B; I0 H0 K/ \; R% }7 Z" X/ e) QDeletePrinterDriver 从系统删除一个打印机驱动程序 ' n. f9 z/ r1 m/ T$ C+ X DeletePrintProcessor 从指定系统删除一个打印处理器 % l. o& f* A S. [( w6 h/ w g DeletePrintProvidor 从系统中删除一个打印供应商 4 }3 y& @" i+ |% f. _' a+ ~# aDeviceCapabilities 利用这个函数可获得与一个设备的能力有关的信息 3 V0 W% h T5 @4 N: JDocumentProperties 打印机配置控制函数 5 l% |: o2 K8 jEndDocAPI 结束一个成功的打印作业 1 w& O, |0 F5 Q, N. ^' w EndDocPrinter 在后台打印程序的级别指定一个文档的结束 & c s' M0 K; S4 BEndPage 用这个函数完成一个页面的打印,并准备设备场景,以便打印下一个页 / T: S( O/ X& C; ?EndPagePrinter 指定一个页在打印作业中的结尾 ; q7 j! m. V/ j EnumForms 枚举一台打印机可用的表单 + [7 ]7 w$ n: K$ `, _EnumJobs 枚举打印队列中的作业 9 n& e$ S/ N. ` EnumMonitors 枚举可用的打印监视器 " ]; Q8 @9 V, ]4 ^2 C% I, \8 I* d# x6 OEnumPorts 枚举一个系统可用的端口 7 z# _ X2 k! i8 xEnumPrinterDrivers 枚举指定系统中已安装的打印机驱动程序 ( c3 P1 z) z# S% R EnumPrinters 枚举系统中安装的打印机 * y7 \! i! Y/ U' ^3 J+ a$ A9 D+ lEnumPrintProcessorDatatypes 枚举由一个打印处理器支持的数据类型 ; G) ^( j: o1 Y# H) J* {EnumPrintProcessors 枚举系统中可用的打印处理器 ; X& e( x/ e% Q% Y# f* o( YEscape 设备控制函数 2 b' T5 |4 u: l4 H FindClosePrinterChangeNotification 关闭用FindFirstPrinterChangeNotification函数获取的一个打印机通告对象 / ?- q8 k( i% ]1 _* x0 | FindFirstPrinterChangeNotification 创建一个新的改变通告对象,以便我们注意打印机状态的各种变化 2 X5 m& b! D: z' l/ CFindNextPrinterChangeNotification 用这个函数判断触发一次打印机改变通告信号的原因 ; V- C6 h2 @# ?9 }. @ FreePrinterNotifyInfo 释放由FindNextPrinterChangeNotification函数分配的一个缓冲区 # a# b) A0 K5 \ wGetForm 取得与指定表单有关的信息 & b0 L2 u9 K$ n3 P GetJob 获取与指定作业有关的信息 3 D) u+ T% V6 a2 d9 \" N4 [/ \ GetPrinter 取得与指定打印机有关的信息 A& S$ Z& D* H8 B; yGetPrinterData 为打印机设置注册表配置信息 . j- }/ S, _$ V3 s9 tGetPrinterDriver 针对指定的打印机,获取与打印机驱动程序有关的信息 : X9 j: f7 m, CGetPrinterDriverDirectory 判断指定系统中包含了打印机驱动程序的目录是什么 : k0 \. m; d# ?- m$ h/ fGetPrintProcessorDirectory 判断指定系统中包含了打印机处理器驱动程序及文件的目录 0 [7 H: R* a) @3 n! ?/ r8 r OpenPrinter 打开指定的打印机,并获取打印机的句柄 " T9 p) q' f& R6 V$ OPrinterMessageBox 在拥有指定打印作业的系统上显示一个打印机出错消息框 ' o" q- S9 ~$ F4 b3 kPrinterProperties 启动打印机属性对话框,以便对打印机进行配置 / _1 z8 w4 T" G F ReadPrinter 从打印机读入数据 ' a, R* s/ u* s# C ResetDC 重设一个设备场景 * X& ~5 O5 ^8 O L# {; I5 OResetPrinter 改变指定打印机的默认数据类型及文档设置 " L* N, h7 p2 Z" g J8 j ScheduleJob 提交一个要打印的作业 ( V0 F: X0 X) oSetAbortProc 为Windows指定取消函数的地址 + l: b! C8 u! c' s5 ~ SetForm 为指定的表单设置信息 : t. }' \, z) @5 RSetJob 对一个打印作业的状态进行控制 9 U. `( u1 y$ c2 Y; _+ D SetPrinter 对一台打印机的状态进行控制 ' x2 S5 H2 P- J( V2 i" k( T% \SetPrinterData 设置打印机的注册表配置信息 / }( y0 F! ?$ Z2 R$ p# z G0 eStartDoc 开始一个打印作业 3 }$ l; h' B5 d7 W2 m7 H StartDocPrinter 在后台打印的级别启动一个新文档 & E; \) d0 T9 ] d) nStartPage 打印一个新页前要先调用这个函数 2 Z7 q+ b7 L9 z StartPagePrinter 在打印作业中指定一个新页的开始 : y5 p) @8 Y% A- b q6 W1 @WritePrinter 将发送目录中的数据写入打印机 $ o' J& _ x& D8 ~+ f3 ?1 b

    回复

    使用道具 举报

    ilikenba 实名认证       

    1万

    主题

    49

    听众

    2万

    积分

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

    [LV.10]以坛为家III

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

    群组万里江山

    群组sas讨论小组

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

    群组C 语言讨论组

    群组Matlab讨论组

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

    主  题: 关于usb通讯方面的问题。请AKing大哥及相关高手来看看,万分感激!!! " T( r& `! `" } 作  者: aiyu33 () 3 F7 k- F& `, m/ X- b2 V等  级: 0 w2 l. W2 K; g% a t信 誉 值: 100 3 `: O, ~7 d8 C% J& f7 q所属论坛: C++ Builder Windows SDK/API : P! k" c7 G s, `( A. w/ R 问题点数: 100 ! g0 i; K% f' F0 O1 f O回复次数: 12 / j7 v+ ~7 v& e8 {9 y发表时间: 2003-12-16 20:43:13 & h: r0 X1 l7 j2 t 1 i$ J6 B' x9 [# L 1 p6 D6 O1 y; c# E& P; \

    最今我接到了开发pc和pocket pc通过usb口通讯的任务。这两个星期我参考了很多方面的资料,特别是AKing大哥写的一些文章。但我始终没有打通这个关口,我贴出我的代码请AKing大哥看看,现在很急,多谢。 ) f7 N0 w4 o. H5 fpc的os是windows2000professional2 A& A3 P$ ^0 Y. }; ?/ j6 R' ` pocket pc是hp ipaq 2210,os 是pocket pc2003。& U5 @& `3 X# z- M; g/ A3 ^ 我装了activesync3.7。我查看过了,这个activesync目录下有pocket pc的驱动程序。pc也能识别。; F% b4 g: K& n) A3 B" D6 ~ 下面是我在pc上调用usb的代码。8 o! Z+ f9 l% g4 a. {% c; ]* e2 V 下面的代码我能打开hidn类型的usb,但是就是不能打开pocket pc的usb。 9 U' H/ N. C3 n( r |. ^9 k//classGuid = {25dbce51-6c8f-4a72-8a6d-b54c2b4fc835}+ V! |0 y* j4 C% E9 H( W/ p0 Q DEFINE_GUID(GUID_CLASS_PALM, . g8 X0 c1 @/ c! _6 v9 p% ? 0x25dbce51, 0x6c8f, 0x4a72, 0x8a, 0x6d, 0xb5, 0x4c, 0x2b, ) h, C& T1 T1 E: g2 d; } 0x4f, 0xc8, 0x35); , l5 L3 `; C7 V/ Q, sGUID HidGuid = GUID_CLASS_PALM; 4 Q2 B( h# A$ SHANDLE Get_DeviceHandle( GUID* pGuid) 2 ?; k& n3 z( T+ W: z{ 6 L3 q( g4 E- i o) a8 k ; Q6 c9 ]1 A: l0 O' A HDEVINFO info = SetupDiGetClassDevs(pGuid, NULL, NULL, DIGCF_PRESENT | DIGCF_INTERFACEDEVICE); $ N/ y8 a# P: q. J. Q! r9 h' y8 Y ; V7 N; B5 [0 G1 L if(info==INVALID_HANDLE_VALUE)" u; m$ X% i) K" A& D5 f" x8 e: A { . P, n* K; g4 h printf("No HDEVINFO available for this GUID\n"); 9 g; R/ I" x5 K8 l: z. o6 D return NULL;7 K* z& @% ]$ K, e$ M1 K0 L; I } % _( M( ?3 ~' T SP_INTERFACE_DEVICE_DATA ifdata;% t( z3 t2 {' A ifdata.cbSize = sizeof(ifdata); + J0 }' Z) K* ]0 K7 K8 L//0000是我在注册表中找到的序号# v3 d/ u0 {; Y4 p& I, _ if(!SetupDiEnumDeviceInterfaces(info, NULL, pGuid, 0000, &ifdata)) 2 F7 L/ M$ Q" a { 4 `# V7 Q1 o8 I printf("No SP_INTERFACE_DEVICE_DATA available for this GUID instance %d \n", instance+1); 3 B4 S( s3 \7 O) f' c SetupDiDestroyDeviceInfoList(info); ) O- c1 H6 s6 t8 r/ L return NULL;. t# |. a: g% n }

    // Get size of symbolic link name$ |$ d2 \" ^7 C7 t DWORD ReqLen;% C' J* v, h g* ^) m4 y- b7 w ' u/ R2 e* L% b" s! n SetupDiGetDeviceInterfaceDetail(info, &ifdata, NULL, 0, &ReqLen, NULL); : m5 w$ z1 ?0 K. Z 1 X* I: O1 S- O5 b PSP_INTERFACE_DEVICE_DETAIL_DATA ifDetail = (PSP_INTERFACE_DEVICE_DETAIL_DATA)(new char[ReqLen]);+ _: U9 _; K/ F4 K, m$ C2 U$ G 4 B$ X( \# l1 K' t if( ifDetail==NULL) * I; I& y+ t3 V( y9 f9 ]: \: }4 } { 1 o1 `" W% o2 B* k7 T SetupDiDestroyDeviceInfoList(info);. d$ q1 G* y% g( x7 A/ H+ G return NULL; , v0 ^: r: ^. y8 r. a }

    // Get symbolic link name) {1 {: n4 \: Z) x* Z) o ifDetail->cbSize = sizeof(SP_INTERFACE_DEVICE_DETAIL_DATA);* w% J6 k- J3 N0 T- a- e: ` + r* b. w" k' C* D2 h- T1 ? if( !SetupDiGetDeviceInterfaceDetail(info, &ifdata, ifDetail, ReqLen, NULL, NULL)) 2 x5 l, o4 n2 y9 h { " \& r3 g) n8 [( V( z3 k; k SetupDiDestroyDeviceInfoList(info); G- q1 e# R# I* ^7 J1 @$ h8 P delete ifDetail; : q& f2 G1 e) r( S `9 R% ?1 p return NULL; Q: g# J5 Z0 `. \ }

    printf("Symbolic link is %s\n",ifDetail->DevicePath);+ J8 W" g6 J# F9 j* }7 a; b4 r$ N

    /*\\?\\usb#vid_03f0&pid_1016#5&1bc41f6c&0&1#{25DBCE51-6C8F-4A72-8A6D-B54C2B4FC835}这是ifDetail->DevicePath的内容*/- }) C! n# a7 i // Open file 6 S7 t7 P5 K7 l: h; m//前面都很正常但就是下面始终得出一个无效的句柄,我也就无法开展下一步的工作. ~" ~5 o8 c" q$ x+ F0 d1 T HANDLE pDevice = CreateFile( , R/ W! h1 u- Q! o0 C8 q E/ o ifDetail->DevicePath, ; T/ p* P+ @! U s GENERIC_READ | GENERIC_WRITE, 8 P" m4 O. O& W& ~! q: f2 F" c3 y FILE_SHARE_READ | FILE_SHARE_WRITE, & R+ }" v4 F0 Z7 l3 U NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); 2 ~1 c/ g5 a2 F( u' U+ G # b7 [7 E- \0 U/ ` if( pDevice==INVALID_HANDLE_VALUE) pDevice = NULL;) X" R; e, h. _# @. H _ SetupDiDestroyDeviceInfoList(info);1 O# Q C, b O+ ^ . x% w0 T; a, ^! M% S5 m; Y8 P return pDevice;1 I4 o' t+ J( d4 G u" {9 y3 B. q } 2 e; M. `6 s2 W! K9 c再次感谢关注这个问题的人们。

    * r' D4 O/ l4 h5 e" m. K& a. M |( \9 i7 S: \ O6 k) x & j( r. W3 j. {0 K' \5 D 回复人: constantine(飘遥的安吉儿) ( ) 信誉:101 2003-12-16 21:23:57 得分:0 5 ^3 j; u) @+ Z/ f4 j " ` U' l, s! L 8 p2 B s8 ^/ Q8 x Y7 Q/ i . f9 d% f' R) X/ w: M8 q2 W4 U8 Y study

    # x) a& B/ ?1 c3 ^ 0 W; @# W5 ^( h8 c, r Top 1 {* x: @, t$ k5 _7 r' d - v* L/ m2 i/ L c* ^ 回复人: wenyongjie(一个想成为大鸟的小菜鸟) ( ) 信誉:95 2003-12-16 22:28:46 得分:0 6 S) [5 J# ? `. T* }4 N $ v1 p( z |. P+ i# @ ( F6 v3 t9 X- A, t m* r! G( f1 }' c2 n4 K6 h+ ] 只有学习的份

    ! J. U$ z4 ?: K' Y $ G: @4 X. j* |Top # n2 g; O2 z3 L . \' x/ e3 s2 Y* }8 s. o& \ 回复人: HUANG_JH(保卫钓鱼岛) ( ) 信誉:115 2003-12-17 9:50:41 得分:10 6 l, D1 z% g# G/ }1 a$ i 7 @ H. r, g' r+ O/ P % P: C7 m g! w, m8 p: i9 t ) x: p+ T d; K5 N. ?/ ^; O% J) T 不知道有没有用!

    /////////////////////////////////////////////////////////////// " ?+ O7 z) _) k8 @// HW9911 evaluation board software Rev. 1.0 4 H1 o: {1 h1 I# y* y8 A// program by Liu Ding, Bei Jing HEAD Elec. / I: M9 P! \% X+ D* P( s// this is the main program for the HW9911 USB device evaluation board , Q; k2 q0 P" y c& k) F; F// it illustrate the basical read/write process of HW9911 * [- p5 I$ o" z/ z- l0 _// by three examples:, G- A& J4 O; ~: L, _6 X // 1. write datas to ram on the evaluation board * [1 ]* G1 b1 e, B& h" N// 2. read the datas from the ram on the board / Z4 p3 D, @( Q+ y, M// 3. send datas through RS-232 serial prot on the board , o3 a% P( W8 Y! u# Z0 l// 1 L8 T6 a3 p; S7 @- l' k2 U // the whole project are build with MSVC 6.0; R) f Y& s" C; C0 |3 D) V9 B // and tested on windows 98 platform. 4 N" L/ B0 r1 V// 9 N7 K" Y9 A0 p& |// notes: you can use hyper terminal to reaceive datas form RS232 port8 |& J0 W1 j1 { C! x // / }/ u: z Q) f) a( o$ [// this software are designed by Liu Ding # `% A8 x" g2 o5 @" d) `) \// if you meet any problems, pls contact by email:9 W1 h5 P* {& D! Q( `$ I // hugehard@263.net/ x$ I* x- B2 i4 U; ?9 t // or contact HEAD Co. by Tel 86-10-87312497 ) E. s. b( T9 F! G5 p) {& E( O// or by fax: 86-10-873124950 Q9 O/ K C+ d6 H ///////////////////////////////////////////////////////////////

    #include "hwdll.h"& g# q7 b0 T' _2 I; m0 ?- @5 F #include "stdafx.h" h- P* B1 e, ~( ]9 K* a- P, o#include <stdio.h>" r3 R. T' `/ ]3 g #include <windows.h> & K+ G' ^' N7 m+ _#include <memory.h> . e7 x" p3 `. h#include <DEVIOCTL.H>; a( q- [, ]. v7 ~' } #include <stdlib.h> % x' o9 K' X( j7 ], F' [: q3 x#include <conio.h>( z& H' F+ w" P0 i& w. e9 m #include "hw9911.h"/ q5 ^5 U( m: ] #include "test9911.h"

    $ E. n) n% `3 L$ F1 L4 \5 Q int main()6 A, ]% Y! w2 ]; X7 ~1 C {# r+ X9 [9 `0 U int hOpen=FALSE;. B, _1 d4 d# L) l2 l) d; { int hCommandLength=32;- o C, A G. s$ A1 t$ \4 D int hDataLength=64; 7 C. e7 O! |& K0 G6 D, z int i,VertAddr=0,HorAddr=0; 5 ?5 [# {+ E. W4 y& E. H int addr,TotalLen; 2 H8 o6 r1 r, r& S! H USC StAddrH=0,StAddrL=0;4 j" _) U& I9 n3 f' u4 _: B0 o1 U- r X, q USC DataLenH,DataLenL; / x4 n8 f6 G" ]5 v. K USC *hDataBuffer,*hCommandBuffer;' r; p- l4 l/ q- v$ Z9 P' p- E. Y USC ch1=0x61;' q4 [3 s6 m; V HANDLE hDeviceHandle; 5 u0 T3 H/ o9 ^( \8 E! G- R3 l # C4 {7 s1 w2 e, x* f* a printf("************************************************\n");( K) V9 J9 M, T( K/ T; x/ V printf("*******HW9911 USB DEVELOPMENT BOARD*************\n");3 v$ u! |, e9 H* `9 a printf("************************************************\n\n"); 2 A2 {8 G$ S1 x5 C printf("now press any key to open board\n");, T b0 T" f& _0 y getch();

    /********* call hDeviceOpen in hwdll.dll to open the board***/8 N2 H7 _& \" v3 a //hOpenDevice 说明: - F! v7 p. U7 m$ L7 `* C// BOOL hOpenDevice(HANDLE *DeviceHandle) ! ^; I7 z0 g" r// 作用:打开设备9 ]) [. W: S( y* P // 参数说明: ( g! [2 E3 r9 v3 a) @% U5 }3 G1 w// DeviceHandle:设备句柄 . z2 a+ e% I' h8 y' ?// 返回值:8 z) ]" Q" y- Q- l4 t) m9 U# `6 Z# E( X* Z // 设备打开成功返回 TRUE,失败则返回FALSE 6 j/ x8 Y; K$ d2 [3 V* h: {6 W if( (hOpen = hOpenDevice( &hDeviceHandle ))==FALSE)3 d+ ~) S7 M- `, d0 n { $ {7 D" @( D8 o6 J+ g Z printf("can't open device\n");6 u, I6 E2 E5 M% e printf("press any key to exit\n");" X) T2 _8 H! S% U# | getch(); % v' E! I8 w+ m6 s& U( ?( P return 0; + B5 u! m6 U2 {& [$ g! \) ]1 j5 A }. i, e# o, }- c' B else 3 L& }1 f) f; y3 B; e0 E printf("\nCongratulations! device opened!\n\n");

    /****** build and send command **********/6 O% Y+ J2 g% P! L1 [5 E printf("how many bytes do you want to access?");$ `0 A4 `5 ^7 q% X! V }6 M scanf("%x",&TotalLen); 8 v& {8 c9 @0 z Z+ M ?( O: J5 w while(TotalLen > 0x7fff)( Q) [- R6 W* e8 i+ ~1 p {/ p& v) v. n8 k$ Y printf("pls input a hex data less than 08000\n"); $ E7 F4 U% A, F) G$ |1 C+ C i scanf("%x",&TotalLen); 5 R, X' H6 F8 w% i! O! M+ Z }' X. b J( @: f @ DataLenH=(USC)(TotalLen/0x100); //data length high bytes% ~5 W/ _2 O, c6 D: F9 N DataLenL=(USC)(TotalLen%0x100); //data length low bytes

    printf("************************************************\n"); * n5 h# D3 M3 y printf("now program will write datas to ram on board\n");: g [- ^3 N- j1 W, P printf("total bytes of datas is %x\n",TotalLen);% N+ D: P6 b0 M: ^) L: p printf("press any key to continue\n\n"); . J# {% U" r" M: s0 @& y5 F8 L getch();8 h3 p8 y; T2 R9 F /***************************************************************** , X g$ p) U, V5 s now will build a write command packet , i" w, w' L0 w a2 B' } with the first byte is 'w'.* W# f8 Z8 F: S* u and the following bytes are:: V/ b/ _9 p! J/ e* u start ram address byte high, start ram address byte low, 0 q: X3 G$ x7 B datalength byte high, data length byte low.8 l# M( z4 v7 b/ V u this packet will send to device through WritePipe1, P7 w- {0 O6 v( }+ @. m- w/ J which is endpoint 2 of HW9911. 1 \, F1 A8 ]) g) D when the device receive this command packet,( v7 K ]) k( w) t' ^! x% n it will write TotalLen bytes data to Ram on the board , c: L1 F0 G( o# Y& L% p******************************************************************/

    $ j; H; L- K1 E4 i' ^* D hCommandBuffer=(USC *)malloc(hCommandLength); 4 m n6 o* ?) Y$ l% @4 k1 b% p hDataBuffer=(USC *)malloc(hDataLength); : k0 S1 g+ t, }( I+ I# t1 w hCommandBuffer[0] = 'w'; //read command% C: C+ z3 p1 ^ hCommandBuffer[1] = StAddrH; ( }8 ?$ ]) u+ u" `& S hCommandBuffer[2] = StAddrL; / x, B1 b$ ~$ s4 M8 D4 F- Q hCommandBuffer[3] = DataLenH; & H2 s( B% x0 U! d hCommandBuffer[4] = DataLenL;

    /* call hUSBIO() in hwdll.dll to send command packet to device*/9 l ` `0 b* D. J Q. A // hUSBIO 说明:( a& S. a% y# h/ `$ a- Q/ w // BOOL hOpenDevice(HANDLE *DeviceHandle,2 v0 ` D9 F" ?& M: K // unsigned char *IOBuffer,% i! L8 ~0 U( | // int BufferLength, / m; p, B1 L# _+ M' H// int PipeNumber, # @: |1 @4 f; G9 t, l// int Action)5 z1 w3 L4 h! I // 作用:设备读写& I, G" Q3 q- n! P0 L) A5 O4 E // 参数说明: 7 z$ a& n: ?2 j y5 f// DeviceHandle:设备句柄8 n6 f9 L, ~2 f, B // IOBuffer: 指向要传送的数据指针! e, t: F, K# A // BufferLength: 数据包长度6 d9 `# x/ G" H" F( @- u3 r // 对于发送缓存1、2和接收缓存1、2,BufferLength必须小于或等于32 9 I7 V0 Q* Z2 @% i+ ~// 对于发送缓存3和接收缓存3,BufferLength必须小于或等于644 y( r% c7 t, ^ // PipeNumber: 通道号1 w: y. F" z3 m // 发送缓存1:PipeNumber=0; 6 \! k& \, ^/ b4 [( P* U2 g// 接收缓存1:PipeNumber=1;' d) N2 i9 u( q! }8 W" C, P$ ]5 n // 发送缓存3:PipeNumber=2; R8 H. ?3 B# W3 O1 j // 接收缓存3:PipeNumber=3; 5 M7 z/ X1 Q8 e; O. d ]! X// Action: 读写标志。TRUE代表从设备读数据到主机 T: j( h4 | q1 b; _- H3 K// FALSE代表从主机发送数据到设备 + w+ t6 t) m- y4 h7 G1 ~9 B// 操作接收缓存,Action必须为FALSE / x7 B" |, s% H/ h# l// 操作发送缓存,Action必须为TRUE $ |4 w* c/ T0 U) t0 ^1 B6 W( @; l// 返回值: 0 V9 c; `6 H# k3 K$ C0 n// 操作成功返回TRUE,失败返回FALSE

    if ( hUSBIO( &hDeviceHandle, 2 R, y: [) p( j" [5 n) G+ C hCommandBuffer,! {4 J" m, s5 f8 T/ A% i hCommandLength,: R/ k5 B" O# ~ d: _ hWritePipe1, 8 S, F; W- j) d+ n2 u) S' z" Y FALSE) == TRUE) ! G: }8 h5 g4 M# g& d# N$ Z {% j' E4 I k# F; ]' x/ D$ {* u printf("command 'w' writed to board\n");" m$ Y8 M5 ?' ` printf("now press any key to write datas to ram\n"); $ T+ |& v; Y) B# ~6 O, ] getch(); 2 }3 Q( v, P9 E" q3 q. h } % ]4 n2 ^* f2 N( k2 l. m else4 R6 I6 |) W/ l4 H E" ?3 b printf("data can't write to device\n");

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

    printf(" ");* U& I" e$ y- k3 ]' j' Y& F2 u8 C7 u for(VertAddr=0;VertAddr<=0xf;VertAddr++), g$ Y$ e) M! v; j' m printf("%02x ",VertAddr);( ^9 {" v* d X! C/ y* ] printf("\n"); . [# F2 O; M6 P addr=0;4 ^+ |* ^, @: P; i& I while (addr<TotalLen) % S) e x& W, B$ E/ L9 E! C {& z; L L% X+ s if (addr+hDataLength > TotalLen)8 y* ~# j( k: v& p( a hDataLength = TotalLen-addr; - j) ?8 L3 R# H2 T+ O; j8 W' S. q for(i=0;i<hDataLength;i++) 2 M# n% z/ l C$ `7 P# L' v { : q A G7 N8 ~ hDataBuffer=ch1++;9 K9 B7 f) @, ~7 D% I, A$ {' t if (ch1 > 0x80) 1 S* w& e, l# O) H: i ch1 = 0x61;) w" `' Z1 S/ r' t8 d+ ~' R; { }8 R8 L, ]- q+ @2 n- @# y /* call hUSBIO to write datas to write pipe3, which ) ]9 ], C7 R- u* H% x- ` G is endoint 6 of HW9911*/

    if ( hUSBIO( &hDeviceHandle,, I2 L7 W: W2 }: |8 G hDataBuffer, " T `' s- R7 g hDataLength, ; j0 c, b W" {% t$ S hWritePipe3, * y8 ^3 j2 a. p4 r0 h FALSE) == TRUE) //FALSE means Write operate9 q% X4 |( @/ M; J. @8 m, t& i) f { " u4 C5 B- _! Y. C1 S for(i=0;i<hDataLength;i++) R5 M1 C- }" c# d3 X9 Q( | {9 E) \6 e$ c4 ^4 p( v d! i. c8 k /* print format control */ / ^. `: D- K, n3 D if(i % 16 == 0) . C7 \0 @! ~4 V* Z* A; e { & H0 j% y( L0 o# G4 s5 F3 z$ m printf("\n%04x ",HorAddr); " R9 D# Y# d; ^8 P$ X3 L& g HorAddr=HorAddr+16;8 Q# I+ H5 H2 G w' I5 m& N }$ f% ]+ y" {+ @3 H) Q) L k/ ] printf("%02x ",(USC)hDataBuffer); : V1 n7 R3 b0 W) E! t } # Y) }; ^% O, J: m2 A3 t% H+ I: g addr=addr+hDataLength;1 U2 s, J( u0 \4 |8 Q+ r } ' t o' v* ^! A# v7 A1 M% c else # l- T, Y$ a w: ?# B$ ^ {/ }* N/ C8 `3 `0 o7 v6 b printf("can't write to board\n"); - G6 V$ @# Y- w9 {. n8 s exit(0);, ]+ `" \" e; P' ^. Y/ u }4 E) _" E1 \2 F q5 O' e }/ Z4 V' T! _# u+ n. G' w; ` printf("\n\nTotal%x bytes write to ram OK\n\n",TotalLen);

    / S0 d( s6 ?* d% R% z+ c $ f t* y2 i9 G: d- |" o6 i Top 6 H& O7 T# Q5 j, h! x/ E ! j5 F7 f! ^) j, f" w 回复人: HUANG_JH(保卫钓鱼岛) ( ) 信誉:115 2003-12-17 9:50:51 得分:0 $ @: z% U6 Y* y. F ! E& F. u5 z _ ) P% _( s: B; T( `. f: N, I

    /***************************************************************** R8 K+ ^ E9 Y! ^ now will build a read command packet - \/ V* ^! h! O! z4 @3 E- p with the first byte is 'R'. / u) r4 A& `7 f) V and the following bytes are:6 [" n+ I! m7 g start ram address byte high, start ram address byte low,, S& \# d7 a& x1 i4 S* y8 J! R6 q datalength byte high, data length byte low. - L1 ~0 o! i4 K2 G' _1 a this packet will send to device through WritePipe1, $ v0 P! B+ X/ e8 @, |4 k which is endpoint 2 of HW9911.. K% U- e* y4 o& Y" {4 p* j when the device receive this command packet, $ K0 n x* a5 } it will read TotalLen bytes data from Ram on the board9 i1 U. c# O2 k9 e9 `1 O* U ******************************************************************/

    printf("************************************************\n"); 3 w% S2 I( C: f" a+ s8 q printf("now program will read datas from ram on board\n"); * u. S$ _! z& e. b( G9 n printf("total bytes of datas is %x\n",TotalLen); / J- M7 I; D7 e% s2 C* H. W printf("press any key to continue\n\n");2 x) J( H4 D* ^. ? getch();- @- ]5 i" d I- v: `6 Y8 A( G hDataLength=64;, T+ C, t* G% j X1 Q* L* B$ K/ w hCommandBuffer[0] = 'r'; //read command % x' F+ J; h3 Z0 }5 a! B hCommandBuffer[1] = StAddrH; ) y0 X" f5 B# w6 D6 z hCommandBuffer[2] = StAddrL; - S) T, O+ {: |. N/ Z8 F hCommandBuffer[3] = DataLenH; & S9 F6 a4 o# E hCommandBuffer[4] = DataLenL; + J/ |% y- V# m! H/* call hUSBIO to send packet */4 X6 D1 n! o4 _' f2 s5 f if ( hUSBIO( &hDeviceHandle,3 T* _& v5 O$ K7 s+ W- w3 m, a- u hCommandBuffer, $ X6 H" ?# h! r! a6 p, v) x hCommandLength, 9 [% m) s, r/ a9 U/ v- L0 U hWritePipe1, ; [$ x8 F8 x# t/ Z% u FALSE) == TRUE)! f( @) J7 ?, e# q7 \ { 0 v& W" \1 E& J- B- m" J printf("command 'r' writed to board\n");/ D/ Y. B, K# e9 z7 i3 ]1 p printf("now press any key to read datas from ram\n\n");3 Z5 g' G& J5 R/ u getch();9 S$ o* Q* c S) q \7 a }4 @3 c$ y6 X2 \; Q6 t' C else* @) [+ [1 _) s4 E: \: w printf("data can't write to device\n");

    /******** read ram data form board **********/7 Y5 H2 c& h6 g- Z printf(" "); # w) ~2 q* q0 l7 w5 g' M! b for(VertAddr=0;VertAddr<=0xf;VertAddr++) # s" e F3 i" U( `. b6 s printf("%02x ",VertAddr); 6 S: k' u: j' q printf("\n"); % c! A0 V3 f" v addr=0;' ]% [, r e( R( j+ R HorAddr=0; V5 ~1 O# J$ l while (addr<TotalLen) ) E4 }7 x6 f3 p( b; I" y1 @* d- E, k { : b7 N4 H' @$ |: b h" D if (addr+hDataLength > TotalLen) m6 l/ ~- o( N/ U hDataLength = TotalLen-addr; 6 F+ _/ o- X7 h/ O& |0 y/* call hUSBIO to read datas from board */ 2 H5 U6 h* m; x7 @9 P* Z& e4 H if ( hUSBIO( &hDeviceHandle,- F9 x7 u% f0 p( X hDataBuffer, " H. N( E" Y+ T, c hDataLength, : G R# m( _: V6 W hReadPipe3, : x( z: }4 v0 D0 L$ X TRUE) == TRUE) //TRUE means Read Operate8 Q1 Y4 f4 `& Y" k% }2 A {& Q a$ p4 ]' X& j! k' z for(i=0;i<hDataLength;i++)" l) U3 N X' V: I+ X' F K {0 P9 `0 N# ]# f( Y- j5 ] /* print format control */ : v5 C7 P7 @/ W if(i % 16 == 0) " b$ T4 m0 K& k {3 }. R0 M& I8 @7 x' e+ g" V printf("\n%04x ",HorAddr); 9 C, b' l( B$ n' Q% J- ~ HorAddr=HorAddr+16; 3 J$ O7 X* Y, z. w- N } 2 M+ `, U5 z* w/ q1 Q# U6 X. W- I printf("%02x ",(USC)hDataBuffer);2 C8 I0 }6 @0 }2 p }% }; {1 z3 u' g& f addr=addr+hDataLength;: o( O# X6 H6 J) y6 V# z4 `3 u } h+ M5 P+ ]& |% q9 L* r else1 M8 M1 B' a9 h7 U. j# C' q {1 c' o3 m0 P% B. o% ~# } printf("can't read from board\n");2 \: r0 ]0 E+ V/ ~+ s exit(0);6 U# m7 E! g7 x. i& L$ J7 s }& Q7 N" {% m% H, H6 E% I5 y a } 3 V' I% w7 ]; P _9 e printf("\n\n");! h2 D5 I2 ^8 ^% F6 @& C$ \ printf("%x bytes read from ram OK\n\n",TotalLen);

    /*****************************************************/ 5 N" f6 ]1 t) \/ s* G& T' }1 \/* process rs232 test */ o9 k) Y; b% ^/ l: \6 F- T /* the first byte in this packet is command 's' */6 B/ V+ X. m& _" \ /* and the following 2 bytes are used to set */' w0 Q( @2 \3 T. r3 r# L, @9 D /* the baud rate of 8051 */ + t) d9 v; K+ G. u* C# D! J/* they will be write to TH1 and TL1 respectively*/ 3 E6 x0 Y$ E+ F1 L" k3 E, j/* the following bytes are datas will be */3 }' @* N* i/ E /* send through RS232 serial poart */2 S4 D+ ~) r# h6 [% ~" S3 b) b /*****************************************************/1 U' h! F! B4 W/ o# a, K+ U9 Y printf("\npress any key to process RS232 Test\n"); ; Q6 A4 P Y0 J getch();0 x( [; m4 n+ }: k8 ~ , ?) j5 {" ?8 F2 y9 |4 J USC TH1,TL1;: X3 H- ?8 H) w9 | c char hStr[30];8 t4 d2 ?8 a& n TH1=(USC)(BD9600/0x100); ) u% o7 r: j/ G6 ?6 f0 x TL1=(USC)(BD9600%0x100);2 ~5 }' H5 s# r3 R! Y! K% I hCommandBuffer[0] = 's'; //read command 3 S4 Z ^: ~! \5 E5 w hCommandBuffer[1] = TH1; 0 E+ M G6 F# R O hCommandBuffer[2] = TL1; //start address is 0x0000

    strcpy(hStr, "Hi, dear HW9911 consumers! ");/ |- y; m- x- m' A$ @, M1 R printf("Hi, dear HW9911 consumers! ");, F- ?2 M1 ~$ _- M6 O memcpy(&(hCommandBuffer[3]),hStr,27);

    if ( hUSBIO( &hDeviceHandle, ) d+ R) [8 k2 V* b$ @ hCommandBuffer, $ y$ F9 G' {/ X/ h 30, - E6 e4 x& ^# {3 ?' a1 ] hWritePipe1,8 i# J1 u1 ^2 G% [0 L! ~ FALSE) == FALSE): X& N1 B" T6 `" W- ? { 2 Y# Q4 O1 m$ m printf("can't write datas to RS232\n");+ c `: l9 f: ~# d, K8 ?3 E exit(0); 2 n! Y+ r; y- f/ {6 B4 V/ h }

    strcpy(hStr, "I'm HW9911 Evaluation Board, ");7 M3 g+ S" W% L5 ?$ y printf("I'm HW9911 Evaluation Board, ");8 S& J7 g/ _' U0 E! F! u2 Z memcpy(&(hCommandBuffer[3]),hStr,29); _+ B. m6 m6 V5 o$ w & k' H$ V; k, x, A! d! g0 x if ( hUSBIO( &hDeviceHandle, 1 @7 L) a! r* X2 x t hCommandBuffer, 2 e6 X5 K o9 h ^ 32, ! Q% S o8 W1 N- A' q hWritePipe1,- C! ?9 ]9 D G/ K FALSE) == FALSE); Q3 m6 D: Y8 s) T, R, ^" W. l. j0 Z {/ I( N$ g4 h& p) N& j1 x2 X4 Y1 B% U printf("can't write datas to RS232\n");3 P, m# N% T$ V7 h. b4 H2 k/ C. z exit(0); - a* A6 @6 |2 M$ c }

    strcpy(hStr, "thanks for purchasing me, "); & {8 B" \# E/ R, u8 ? printf("thanks for purchasing me, ");, F3 \7 E, u' I* J6 H memcpy(&(hCommandBuffer[3]),hStr,26);6 x- `" `$ f% Q$ n 2 X6 A" h) E, v) x& O9 Y( G d if ( hUSBIO( &hDeviceHandle, 9 G5 i& @; g6 k& J; ~& ?/ A$ z hCommandBuffer, 6 g3 V5 Q9 X2 p. d 29,/ D0 D+ ~) @; D+ l$ D0 k) h% s hWritePipe1,' U# O- I0 F$ b9 D7 C1 r3 D. r U FALSE) == FALSE) : Q5 Y$ Y7 s: i9 w5 r9 o+ V' ? { , O3 ^ |) Y0 h- S" ?8 @. C( L0 o; C printf("can't write datas to RS232\n"); ; m2 `% M( p! |: A0 W5 v. @ exit(0); + Z5 K+ i- r* ]- n } 8 E" ?5 i2 h# J: I & ?4 o" b4 A& b% h strcpy(hStr, "If you meet some problems, "); : W; h! o4 E+ p printf(hStr, "If you meet some problems, ");- x# r9 e# U8 c: ^9 G0 f( q1 w, Q memcpy(&(hCommandBuffer[3]),hStr,27); 4 j! H3 I# S! g* w & S8 v; K! T1 x) L! n/ ? a if ( hUSBIO( &hDeviceHandle,: ~& A \ C9 W g: d) u hCommandBuffer, 8 z4 c) s- X k, A7 `& [* H+ V7 B 30, : Z: b3 P& r+ U8 k+ X hWritePipe1,3 \9 e' R V/ X: s @ C& y FALSE) == FALSE)" t. z$ r0 c9 k/ h# k; A4 J9 `) J {9 }) b6 `" {7 Y1 s printf("can't write datas to RS232\n");" f$ b' M+ V/ n( X( L9 E exit(0); ! N' e: P; I, r2 @. ]( c! A# c }

    strcpy(hStr, "pls contact my designer "); 0 W' T1 b+ m1 G0 E/ d9 n& A printf("pls contact my designer "); ' s9 y2 j+ ^* Z- r memcpy(&(hCommandBuffer[3]),hStr,24); - Q. m% ?$ ^' ~/ h ) H6 I- j8 Q/ s3 I7 a if ( hUSBIO( &hDeviceHandle, : k* l5 E7 q# w5 {! F2 a7 A hCommandBuffer, : P) y$ y" m1 i; D1 k# p 27,8 r$ C# p6 f+ q hWritePipe1, ( G- z9 E/ o3 f8 F Z FALSE) == FALSE) 1 Y" _ r1 W% U$ h( n {' d8 v9 U: u( H+ ^ printf("can't write datas to RS232\n");8 P( a( q, c, y# v+ |4 M exit(0); 1 c1 e4 g4 l4 G B" Q }

    strcpy(hStr, "by email: hugehard@263.net.");6 l/ Q; K ]+ K printf("by email: hugehard@263.net.\n");- A H k$ ~2 u memcpy(&(hCommandBuffer[3]),hStr,27);& n0 A0 n M) p0 E* P7 p& N 6 ^- E5 b7 B4 K- H0 N* ]9 p if ( hUSBIO( &hDeviceHandle, " v4 @7 H. k4 X4 e& h% { hCommandBuffer,3 P; H! G% @' h 30, & T* X1 T/ ^/ A r3 _& G hWritePipe1, 9 e2 T1 G1 v* e6 N% p9 V/ k' V FALSE) == FALSE)7 r2 \! b& c7 e5 h p { $ ^5 `) a/ G& a printf("can't write datas to RS232\n");! i9 w" G& @& z& X$ y- W$ g exit(0);5 b* Z* a3 @, |( S1 O4 t1 L } 8 U3 [1 x5 q, F; S5 S5 T x/********* call hDeviceOpen in hwdll.dll to open the board***/7 C0 {3 p. [# p, M3 }* P // hCloseDevice 说明:/ L" {; }+ H/ P7 [5 d& f // BOOL hCloseDevice(HANDLE *DeviceHandle)% y A3 y& y; \7 } // 作用:关闭设备 5 O$ W$ G( l( M7 ]0 Q// 参数说明:5 p, X) N4 p, v* S // DeviceHandle:设备句柄. z5 B! D9 K4 C' m3 e6 J // 返回值:% c4 M, Z8 r5 J7 v8 p8 N0 I1 n4 h // 设备关闭成功返回 TRUE,失败则返回FALSE 6 u& h; g% q: ?/ K5 E# A' K# u! U if( (hOpen = hCloseDevice( &hDeviceHandle ))==FALSE): V" X* r6 \$ k& y( @ {/ m* w8 x3 M, e2 V printf("can't open device\n");: D- h7 r Q" c4 r/ x printf("press any key to exit\n"); & d1 |& T' _1 c. c* s' D8 q/ P getch(); - n% B: a( N/ i; j return 0;: ^; R$ H" [' x3 W! y$ Y } 0 d5 ?7 @; U/ {2 |8 ? else 2 C. F/ |& i4 d3 Z% x# B printf("device closed\n");

    printf("press any key to exit the program\n");3 X% v0 _, J0 R" u! b free(hDataBuffer);2 ]( c7 \2 G0 s* G4 l4 d( Q free(hCommandBuffer);- y$ i( r" G; D; i1 { getch(); : l6 S* X% S/ G return 0;. r( E+ Q' o6 T& m5 V }

    * U$ S. C S E3 } 0 ~+ U5 A. m" [# C% t 9 g' J$ D7 |1 p! w7 o# gTop . }% L) H% K* j) @+ L- x& o" `1 h ) N! X5 G l! u- k# u2 s5 {' V 回复人: aiyu33() ( ) 信誉:100 2003-12-17 11:41:24 得分:0 6 }: y8 _0 X2 F, b! h " t! ~" Z+ d" K: Y( W 9 I; q; P8 h9 g! e: d ' j. x2 T, _4 e; o# g& w2 N$ Oupupupupupupup

    % L R# x5 ^7 V9 I0 l& S' r; z : u% L& T/ G; Z1 C5 T2 w Top 9 \$ c8 c0 L# L 7 K* t* c l- P9 o2 W, e 回复人: kingcaiyao(AKing) ( ) 信誉:110 2003-12-17 12:53:39 得分:0 ) n& x ]5 Q4 q3 ]/ j" p# E" a ( g) B( S% ?2 [0 b y 5 M2 M' S7 E% L m) A- x6 ?+ H( e ! [6 ^9 B9 d6 ]2 X0 X% V 你开发的这种软件类似于Palm Desktop Software,负责Pocket与PC之间通讯,我建议你最好先写一个驱动,将USB口虚拟成一个串口,然后直接对串口操作会很方便的。我现在做的程序可能和你相似是一个CDMA模块,通过USB口与PC机连接,然后由驱动程序将它虚拟成一个串口,我的工作就是和这个虚拟的串口通讯。

    8 n) I7 P" J/ \6 Q' T+ V7 n + z; O$ P, M& d" u Top + y' h6 j" s/ Q- P& P# U ; r; A% t& H& F5 r1 s" a 回复人: kingcaiyao(AKing) ( ) 信誉:110 2003-12-17 12:56:27 得分:0 8 g- ~4 O( P! ?* @. \5 _7 T 7 P6 f- b" z7 i0 o, r , P' k( S$ B* J) Y6 Y$ j 0 K# ]# M9 ~ A3 `+ G5 hPocket与PC连接肯定有驱动的,如果驱动程序没有将Pocket虚拟成一个串口,你也可以直接通过设备GUID和设备序列号进行访问,详情你参见我专栏上的一篇文章。当然了,通过虚拟串口来访问设备肯定要方便,简单些。

    7 ^; E4 z( c1 b1 ]: C' t- n4 O + n. {7 \9 S# Q7 F O' ZTop % ^* F" j# F7 F* \ 6 k, Z+ S4 H7 T" t' X! f 回复人: aiyu33() ( ) 信誉:100 2003-12-17 13:31:08 得分:0 ?3 S% W# t. `4 T8 k / L( Q! ~5 N6 N* e$ ~9 K* ~ 2 d& F5 N0 x' z0 Y" f3 G 0 R) e8 _ i) V0 \7 v) y7 S我得这款pocketpc默认只支持使用usb与pc相连的,而且activesync3.7就是使用usb传输数据的。如果我自己写驱动的话,不仅不熟悉而且很可能activesync3.7这个软件就使用不了。我只需要利用它的驱动。你的专栏上的那篇文章我也看了,我就是模仿你的写的代码,但就是到createfile这步就不行了,我的同事是用palm开发类似的程序,也是到这步就行不通了,是不是有其他的原因?3 E8 l/ b7 b/ K, |9 G, Q 我还想问问如果驱动程序将pocket虚拟成串口,如何查看它的符号名呢?

    % }1 W2 Y0 O/ f; W * i# V( E0 H( X 8 e( G, e8 M! k Top ( {" T1 f! u1 L8 g/ T0 h s" M3 Y! r* K- I0 r0 ?3 { 回复人: kingcaiyao(AKing) ( ) 信誉:110 2003-12-17 16:53:17 得分:0 . R; Y6 J/ g1 Q7 u/ M! P* ]8 B1 x8 ` . R# G0 O8 e" F: H 7 p5 M/ \, \* F9 [* ] + I0 x* `) C: u假如将一个USB设备虚拟成串口的话,那么它的符号名可能是COM3,COM4,或COMn,这根据你当前PC机的配置而定 。它的符号名位于注册表中HKEY_LOCAL_MACHINE\CurrentControlSet中,你可以搜索注册表,另外在2000或以上的操作系统中,你可以到HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SerialComm中看到。

    1 c" P* z0 G1 ^% k9 ^0 E 3 |4 `& F$ \) R6 j7 B5 A Top 0 {( y& C/ o* T# v: i ; a O5 h5 J1 ?+ \! f 回复人: kingcaiyao(AKing) ( ) 信誉:110 2003-12-17 16:55:33 得分:0 , {! m0 H, T& b$ y9 Q# g 2 G0 w7 P. e: V% a 1 S6 B9 T; A) g, `: ]+ d, @# x' p4 K & W: w' G% Q' a2 H- e我以前在一张贴子中详细回答了如何利用设备序列号和设备GUID来访问该设备,你可以搜索一下CSDN。你所说的CreateFile不能打通设备,你要查一下,你的符号名是否正确,包括设备序列号和设备GUID是否正确,设备GUID你可以从驱动程序的安装向导文件.inf中找到,设备序列号则需要你到注册表中去找。

    1 D% x5 w0 n3 F% N! w 4 S1 ^- @3 H) L9 j4 O Top ) Q3 R0 S4 C: T - ]& L2 G9 l/ e# [7 Y 回复人: gyj_china(透明) ( ) 信誉:98 2003-12-17 18:15:30 得分:90 ; L7 n' V0 x9 e+ H* h$ P% I1 p ' P9 w) y, O. [) V4 P+ X , c* y$ D& s0 o5 I; x4 G - |6 _* _$ @+ M- E- c( l* i; W8 ?! c6 V 没有星星不敢发言:(

    . O4 t2 C/ H3 D. \' K& ` * l7 ~* I) @' Q0 H0 YTop ! E, D5 G% k k o l 5 s" i; N. v2 n! [: y8 e! ~' B 回复人: aiyu33() ( ) 信誉:100 2003-12-19 18:27:28 得分:0 ' T% A* O- k5 S! [ % c5 Y; _# d; F! s0 v5 t5 H. A # [4 T! C1 l/ \3 c( }. ^ 2 z% ]- w+ g9 x& ` { 不好意思,是因为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-9-1 06:04 , Processed in 0.386218 second(s), 100 queries .

    回顶部