QQ登录

只需要一步,快速开始

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

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

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

10

主题

1

听众

98

积分

升级  97.89%

该用户从未签到

新人进步奖

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

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

& w6 ~4 l9 U4 _8 G

我暈,看來這回死定了

3 l& e6 e F% w- S: |

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

$ f0 C- D% k: ]- M3 X1 B

老大救命哦

[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之打印函数:# E @! m: y' P AbortDoc 取消一份文档的打印 . V6 x K! T/ r6 d" W% m) T2 m. ~7 DAbortPrinter 删除与一台打印机关联在一起的缓冲文件 8 p/ I: }$ i2 h4 Z2 xAddForm 为打印机的表单列表添加一个新表单 0 H3 W( H7 \" [8 p) i% p1 x4 }! t: F AddJob 用于获取一个有效的路径名,以便用它为作业创建一个后台打印文件。它也会为作业分配一个作业编号 ' f& y: l1 [( D0 e AddMonitor 为系统添加一个打印机监视器 8 {, E4 f# N4 QAddPort 启动“添加端口”对话框,允许用户在系统可用端口列表中加入一个新端口 9 \5 Z1 a2 \8 M3 u: g, fAddPrinter 在系统中添加一台新打印机 ) ]. N6 i0 n, t4 j7 I3 t9 Q8 ?9 m8 @AddPrinterConnection 连接指定的打印机 `3 Z Y$ ^# w0 k' M; j! ]* R1 `AddPrinterDriver 为指定的系统添加一个打印驱动程序 9 \5 [! I( r6 f: l2 `0 J" _. c4 ? AddPrintProcessor 为指定的系统添加一个打印处理器 6 _0 h& L6 F3 L; T. w/ h) D% c/ M AddPrintProvidor 为系统添加一个打印供应商 % }" E% T' {2 E& k! Z$ u# w) r3 \AdvancedDocumentProperties 启动打印机文档设置对话框 3 D/ U% r! H. }9 W3 J0 l ClosePrinter 关闭一个打开的打印机对象 % o( L! F1 m9 n; ^ ConfigurePort 针对指定的端口,启动一个端口配置对话框 6 e& l+ g6 c! ~0 h) u, m+ pConnectToPrinterDlg 启动连接打印机对话框,用它同访问网络的打印机连接 / ?: \& z4 r, u9 q" b& u2 m+ A" Q DeleteForm 从打印机可用表单列表中删除一个表单 1 x& [0 q# \9 x+ w4 @( a DeleteMonitor 删除指定的打印监视器 " `2 e! q$ Q1 }' }0 J! R& h DeletePort 启动“删除端口”对话框,允许用户从当前系统删除一个端口 ) \& Y# ~4 y' l9 w# q6 {$ }4 s1 LDeletePrinter 将指定的打印机标志为从系统中删除 , Q2 V2 Y2 B% e; z2 F5 ?( C4 j9 kDeletePrinterConnection 删除与指定打印机的连接 m) P( ?# w7 C! c, s5 h DeletePrinterDriver 从系统删除一个打印机驱动程序 2 w2 P. e) Z: S6 s8 T, @DeletePrintProcessor 从指定系统删除一个打印处理器 " X f/ k6 B! f$ R4 T1 ]' q: o DeletePrintProvidor 从系统中删除一个打印供应商 / i% G6 @0 B! ~5 {5 \6 s& h' Q: Z3 WDeviceCapabilities 利用这个函数可获得与一个设备的能力有关的信息 $ l& }+ X# C4 T [) C" U6 ]& KDocumentProperties 打印机配置控制函数 ( _4 R( [6 h0 R- r% n$ s. n/ g7 kEndDocAPI 结束一个成功的打印作业 6 \4 N. O1 q. n' yEndDocPrinter 在后台打印程序的级别指定一个文档的结束 4 I. y9 }* m8 t: l! nEndPage 用这个函数完成一个页面的打印,并准备设备场景,以便打印下一个页 - y6 F" q: ^3 T: h( l5 B EndPagePrinter 指定一个页在打印作业中的结尾 1 ?5 s& B/ B3 G. F! @EnumForms 枚举一台打印机可用的表单 : A @* D1 s* Z" g1 d/ i( pEnumJobs 枚举打印队列中的作业 9 u; }- w7 \4 h5 x( y( b EnumMonitors 枚举可用的打印监视器 " u- X) L8 f/ J* WEnumPorts 枚举一个系统可用的端口 5 b u3 i$ L8 h9 d5 d( b EnumPrinterDrivers 枚举指定系统中已安装的打印机驱动程序 . L* Y& |3 Z% q; s" I. o" N% c EnumPrinters 枚举系统中安装的打印机 6 a/ n; I; n2 H- @6 W2 g. J$ kEnumPrintProcessorDatatypes 枚举由一个打印处理器支持的数据类型 * y. k' ~4 l B7 {3 u! TEnumPrintProcessors 枚举系统中可用的打印处理器 . e/ N t( k/ A2 r, O" Z6 C+ a Escape 设备控制函数 $ i/ g+ v* n9 x' H e5 C( t7 \ FindClosePrinterChangeNotification 关闭用FindFirstPrinterChangeNotification函数获取的一个打印机通告对象 4 V& e# \; V6 c1 A: Y4 ` FindFirstPrinterChangeNotification 创建一个新的改变通告对象,以便我们注意打印机状态的各种变化 * j' e- y* B6 x } aFindNextPrinterChangeNotification 用这个函数判断触发一次打印机改变通告信号的原因 6 f! i) H) r: VFreePrinterNotifyInfo 释放由FindNextPrinterChangeNotification函数分配的一个缓冲区 7 f# h( U' L( i# G2 D7 h6 Q GetForm 取得与指定表单有关的信息 + u- d# i5 y, d3 sGetJob 获取与指定作业有关的信息 $ G' u+ }3 f1 y V' P" j4 w6 A4 e GetPrinter 取得与指定打印机有关的信息 * S$ s1 {: U1 l; B( i GetPrinterData 为打印机设置注册表配置信息 / r7 Z) W& `' n1 `+ E( R GetPrinterDriver 针对指定的打印机,获取与打印机驱动程序有关的信息 : Q) O n6 I& Y$ LGetPrinterDriverDirectory 判断指定系统中包含了打印机驱动程序的目录是什么 ! N; f0 o7 f& q" `$ yGetPrintProcessorDirectory 判断指定系统中包含了打印机处理器驱动程序及文件的目录 O( Y! t, n) K- K0 O- T: v7 d9 X mOpenPrinter 打开指定的打印机,并获取打印机的句柄 - l) D/ Z7 F( Z$ O! A8 F5 oPrinterMessageBox 在拥有指定打印作业的系统上显示一个打印机出错消息框 0 {# x, \9 b4 M PrinterProperties 启动打印机属性对话框,以便对打印机进行配置 " w9 X* ]3 v* o# O9 G" gReadPrinter 从打印机读入数据 0 }8 e/ _% S$ m4 D# G- IResetDC 重设一个设备场景 $ K$ k' [: e; d, T5 T" t ResetPrinter 改变指定打印机的默认数据类型及文档设置 5 A* I4 v1 ~$ W$ V& j7 ]; @ScheduleJob 提交一个要打印的作业 6 c: ~' f8 p, q' y. L; DSetAbortProc 为Windows指定取消函数的地址 , o9 k1 N! l" t$ P SetForm 为指定的表单设置信息 $ B8 v, A( K2 @: l- ~" R3 eSetJob 对一个打印作业的状态进行控制 4 @* w1 y# B7 D" B0 X: MSetPrinter 对一台打印机的状态进行控制 2 ]. o7 }; e Q! R7 fSetPrinterData 设置打印机的注册表配置信息 : ^2 ?' P h" c. b c0 v N# v5 P StartDoc 开始一个打印作业 , M& s, C$ w8 M+ h4 |: c) C StartDocPrinter 在后台打印的级别启动一个新文档 3 q0 m( n9 f$ {4 q7 uStartPage 打印一个新页前要先调用这个函数 * p0 l2 v m8 y- x, M0 ^ StartPagePrinter 在打印作业中指定一个新页的开始 # Y, M( p' f- H; A4 k5 b' y" _ WritePrinter 将发送目录中的数据写入打印机 . V& Y- M& c& ^

    回复

    使用道具 举报

    ilikenba 实名认证       

    1万

    主题

    49

    听众

    2万

    积分

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

    [LV.10]以坛为家III

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

    群组万里江山

    群组sas讨论小组

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

    群组C 语言讨论组

    群组Matlab讨论组

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

    主  题: 关于usb通讯方面的问题。请AKing大哥及相关高手来看看,万分感激!!! / I% z# z7 `" g6 q0 a6 v. |作  者: aiyu33 () ' c: ~4 E. I b _& e 等  级: 3 m* }) R# w! {9 \+ f信 誉 值: 100 4 p; g# q) c( Y 所属论坛: C++ Builder Windows SDK/API : N" b$ S L% N( Z. U问题点数: 100 1 v2 u+ U& p- _7 m1 i 回复次数: 12 ) G! k# S; N; S5 `; a1 I0 Z 发表时间: 2003-12-16 20:43:13 ! e' \! b/ x! E# Y" F 9 W( P0 e7 e/ W R' I, C0 s 2 _) h3 n9 \) l9 q

    最今我接到了开发pc和pocket pc通过usb口通讯的任务。这两个星期我参考了很多方面的资料,特别是AKing大哥写的一些文章。但我始终没有打通这个关口,我贴出我的代码请AKing大哥看看,现在很急,多谢。9 q( h' B! l/ f5 d% [4 O pc的os是windows2000professional ! X6 f; P+ T" w: V* ]pocket pc是hp ipaq 2210,os 是pocket pc2003。- X ]6 |5 t* z1 \5 d9 J 我装了activesync3.7。我查看过了,这个activesync目录下有pocket pc的驱动程序。pc也能识别。& H3 W }9 |! F9 P K 下面是我在pc上调用usb的代码。& G: l1 C& n9 B4 H& Z# X4 c( h) V 下面的代码我能打开hidn类型的usb,但是就是不能打开pocket pc的usb。1 M& E& B$ r( i+ S6 C5 C //classGuid = {25dbce51-6c8f-4a72-8a6d-b54c2b4fc835}$ p. W9 r; c8 U; } DEFINE_GUID(GUID_CLASS_PALM, # c5 S1 J) H. B# B% z+ s 0x25dbce51, 0x6c8f, 0x4a72, 0x8a, 0x6d, 0xb5, 0x4c, 0x2b, # e- {2 ?4 ?1 K6 b; y 0x4f, 0xc8, 0x35); . [& }9 @( Y3 s0 }GUID HidGuid = GUID_CLASS_PALM; 2 y4 D: o3 ]8 d n+ lHANDLE Get_DeviceHandle( GUID* pGuid)+ ?4 p- P% E4 k/ [8 | {3 K( y6 [/ H& z ; E) z- V* l0 L% [% e7 b HDEVINFO info = SetupDiGetClassDevs(pGuid, NULL, NULL, DIGCF_PRESENT | DIGCF_INTERFACEDEVICE);. F% X* w6 O! ^. _& i1 I$ ^" { 6 }- ?& u: y" q( z* ]0 a if(info==INVALID_HANDLE_VALUE)7 G# Z8 L) w5 {" v; _ {( \& e; F4 I5 g8 Z e+ Z4 k: `2 q printf("No HDEVINFO available for this GUID\n");# V0 Q8 v, @0 v3 h' B Q return NULL;0 f# G# w3 ?. H' r- P; R } " v; D* V( H3 K( x' w G SP_INTERFACE_DEVICE_DATA ifdata; : b8 X1 \5 @5 v) v" | ] ifdata.cbSize = sizeof(ifdata); * A. E2 h1 G; g0 R9 D//0000是我在注册表中找到的序号 7 ~, }) K' T! X1 O+ Y( C- W if(!SetupDiEnumDeviceInterfaces(info, NULL, pGuid, 0000, &ifdata)) ( J R5 I6 k% }8 X8 X2 D& | {1 ~. i# d1 T* }' g* } printf("No SP_INTERFACE_DEVICE_DATA available for this GUID instance %d \n", instance+1);' s! D3 T0 v% I: d SetupDiDestroyDeviceInfoList(info); ) P* O1 n) C, }' S& F& G3 A R+ t return NULL;- T+ v% h6 J0 a/ Y }

    // Get size of symbolic link name / H0 @8 T' L ^' Q) B, V DWORD ReqLen; * e. i! j% y8 ]+ p- n7 ? ' B z0 u7 q% P& w7 Q3 N8 O% y0 b SetupDiGetDeviceInterfaceDetail(info, &ifdata, NULL, 0, &ReqLen, NULL); , e( i6 X3 b; [$ T) \3 e* l1 d7 p a T1 `& A5 T: B1 y PSP_INTERFACE_DEVICE_DETAIL_DATA ifDetail = (PSP_INTERFACE_DEVICE_DETAIL_DATA)(new char[ReqLen]); " \0 O, z4 Q- \/ ^* K4 L , A5 W0 e1 P5 R if( ifDetail==NULL)7 M' C3 h5 A `9 N* s* e4 r& {* T8 K { % {. v* w6 ^/ X7 s* I% ] SetupDiDestroyDeviceInfoList(info); / t1 G% _5 M3 h+ E' Y2 x return NULL; 9 Z) k) n: w% P1 N/ V. v }

    // Get symbolic link name ( {3 o5 v$ Y/ I( k3 ^ O( i) C ifDetail->cbSize = sizeof(SP_INTERFACE_DEVICE_DETAIL_DATA); 1 B. u$ a4 L+ o3 d 3 d0 O& n+ B+ }, x; O if( !SetupDiGetDeviceInterfaceDetail(info, &ifdata, ifDetail, ReqLen, NULL, NULL))0 V; j; _* T6 {. B* X {1 R+ g* j% w" g# h( A SetupDiDestroyDeviceInfoList(info); ( Y3 l8 g4 X6 v# }! `# B delete ifDetail;) g1 P( \5 K& |* c. q1 l( A$ o( R6 ` return NULL; % h: D+ n6 P- g! D( e) J }

    printf("Symbolic link is %s\n",ifDetail->DevicePath); / N# A& @9 v# s: @/ t

    /*\\?\\usb#vid_03f0&pid_1016#5&1bc41f6c&0&1#{25DBCE51-6C8F-4A72-8A6D-B54C2B4FC835}这是ifDetail->DevicePath的内容*/% e8 [/ n, d5 T. p! @ B // Open file 7 }$ K% s& v5 N8 g0 @& l//前面都很正常但就是下面始终得出一个无效的句柄,我也就无法开展下一步的工作. |0 U% {* O% J& X HANDLE pDevice = CreateFile(% @# C4 U# ~6 s% @3 E ifDetail->DevicePath, 3 q. t$ k. }, F0 o5 g2 ~1 Y$ u GENERIC_READ | GENERIC_WRITE,4 G+ C ?% m% e7 }5 A. I FILE_SHARE_READ | FILE_SHARE_WRITE,' i7 L3 L0 o- L& s# V! ]( n9 z- c( G NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); 1 O0 A) e! A3 W+ i* U ; _+ m1 {1 E& t" T" b5 Q Z$ m$ f, { if( pDevice==INVALID_HANDLE_VALUE) pDevice = NULL; ! f, H" B: H, u2 i6 s! p SetupDiDestroyDeviceInfoList(info); 5 k- E- v5 h5 j8 Y; N; E0 V y4 Y : Y4 f9 @3 n; ~0 i return pDevice; - Y# l' R# Z6 b0 ~* z9 @4 x# X3 D2 \}* A0 f/ a' Y, b+ }: b' Q: t 再次感谢关注这个问题的人们。

    & `1 d8 W8 Q3 c; Q2 K0 k " d9 ?/ A4 e2 B& H" _. ~ % ^# H0 g K8 W$ T 回复人: constantine(飘遥的安吉儿) ( ) 信誉:101 2003-12-16 21:23:57 得分:0 . m" c/ M! W$ `' b# S/ S, C3 w & y- t/ f7 C! c# [ - `0 q5 |6 Z' `% u 7 ~; e5 a6 R9 [study

    3 s+ }1 k M8 ]9 }8 v8 [ P1 s! z ' R$ C! S& _. l: Y7 ^4 C4 F, q Top ; r5 M7 x$ K- a2 W ' h+ W) m; D+ x' s7 R* d 回复人: wenyongjie(一个想成为大鸟的小菜鸟) ( ) 信誉:95 2003-12-16 22:28:46 得分:0 - C) b W' j% P 9 @2 c% ?, a) C2 J ) z$ o {" i9 j( e: Q" j: E " c5 z L1 @6 U h1 S; U只有学习的份

    ! V0 p3 q. D' t0 t1 V; x 8 J" L: d k- j6 o( Z4 d: FTop * n" S* |8 ]+ U8 y: e , U+ W' n& {5 r3 {3 Z | 回复人: HUANG_JH(保卫钓鱼岛) ( ) 信誉:115 2003-12-17 9:50:41 得分:10 # F6 Q& n5 g% I7 S6 I5 { / O/ s* M% R+ g+ w0 ^4 X ; }# a, H5 u1 p# j7 z % b! U. H/ o/ u% ?% \不知道有没有用!

    ///////////////////////////////////////////////////////////////) A; D3 T5 }7 E) [ // HW9911 evaluation board software Rev. 1.0' @2 P8 i) v, U( }( ~4 @: W- p // program by Liu Ding, Bei Jing HEAD Elec. ' H0 ]# ]3 F6 _: W5 q. o: T8 y// this is the main program for the HW9911 USB device evaluation board: h; i) Z$ p& t // it illustrate the basical read/write process of HW9911) t9 H$ ~ e5 G // by three examples: * g" e1 t/ v& H8 g# a- h- B/ o// 1. write datas to ram on the evaluation board1 a' j! r: n+ M) y3 A, B // 2. read the datas from the ram on the board ! u# v- p$ ~; ?/ C ~// 3. send datas through RS-232 serial prot on the board * u2 w' @4 F. \& @5 I0 M6 }// + f7 N6 Y( V" o( G // the whole project are build with MSVC 6.0 1 |- `) \! w+ Z4 r4 S5 O// and tested on windows 98 platform. * s( n! T3 ]% K# v// 6 G. Y- h" W5 v# o8 k. z# j// notes: you can use hyper terminal to reaceive datas form RS232 port ! y3 ^8 m4 @. c4 e// # e0 i1 B; u3 f* P$ t: Y1 e// this software are designed by Liu Ding 1 s X3 X+ |7 ]/ a# Z// if you meet any problems, pls contact by email: & E ^+ |9 B) Z) m- v) E" M// hugehard@263.net # W: [, t$ F1 ?// or contact HEAD Co. by Tel 86-10-87312497 & |- m$ O; L2 n; i// or by fax: 86-10-87312495 2 ?- ^( n- d5 ^, x: [///////////////////////////////////////////////////////////////

    #include "hwdll.h" $ b( ?/ \. A0 Y9 W2 F#include "stdafx.h" 9 T3 q+ P( W) l( k) d- [#include <stdio.h>' K: Y- b9 F/ }2 c8 w #include <windows.h>) n1 I5 B- h; ?- D/ j8 {- K2 \ #include <memory.h> 9 y1 `& ~; l/ ?0 X# Z' k+ L#include <DEVIOCTL.H>3 H L: [1 K( \, y( }& }" q" a #include <stdlib.h> , M, b O) R/ W#include <conio.h> + l% q+ x8 E* h6 I#include "hw9911.h" 0 s+ M: j$ @7 r N" B- M( C B#include "test9911.h"

    H( k9 t4 H9 y0 S, [int main() m. L |, a$ q! u2 Y{2 o6 A, d+ M* ~ int hOpen=FALSE;6 O2 a$ d1 g5 ?% o& x int hCommandLength=32; 7 d7 Q7 I) E) y int hDataLength=64;9 C2 p. L Y. d4 C9 u int i,VertAddr=0,HorAddr=0; ' l; o1 h+ Z) Q int addr,TotalLen;3 j% I3 ^- c7 h; x4 n, g USC StAddrH=0,StAddrL=0;; G" ]' }3 l/ y; g4 X* ], {7 v8 i USC DataLenH,DataLenL;$ ]" ]( h- w6 o( p" ~ USC *hDataBuffer,*hCommandBuffer;- M/ X2 Y2 Y c! x1 h* ?; T USC ch1=0x61;# i a* D" v* i J, ]$ c" _' ] HANDLE hDeviceHandle; ) S8 @- ^7 L) m1 k : O2 W6 O5 f; m" @" V4 n printf("************************************************\n");& O# ]6 i; Y0 q; j8 s9 [! H printf("*******HW9911 USB DEVELOPMENT BOARD*************\n");: H/ z* L: V5 I& Z printf("************************************************\n\n"); / g2 z# N- N3 E% W. `8 o printf("now press any key to open board\n"); 1 I3 N' z$ Q3 r/ G5 n getch();

    /********* call hDeviceOpen in hwdll.dll to open the board***/0 L( |* x7 A& p //hOpenDevice 说明:) Y4 n! w4 q/ }1 I7 R9 A. m // BOOL hOpenDevice(HANDLE *DeviceHandle) 3 \' O6 R8 H) Q1 W" l5 k4 }& c8 k// 作用:打开设备& s7 f1 H) |7 T9 o: s6 R // 参数说明: ) m! U0 g' y: q% `/ K+ n// DeviceHandle:设备句柄+ [4 n0 t9 M3 E. b // 返回值: ) t( t2 U% e/ }# t// 设备打开成功返回 TRUE,失败则返回FALSE4 O, j, h7 [1 h$ v7 J if( (hOpen = hOpenDevice( &hDeviceHandle ))==FALSE)1 d: j1 f; h9 i" n {# X p7 }. q3 W$ n7 H' z# R- E) b$ @ printf("can't open device\n");5 P6 f8 H+ H3 ?0 L6 s. r printf("press any key to exit\n"); . e8 n2 p2 Y, E' T1 X: ~1 @( x% @ getch();5 D" z0 C B4 L. f1 C return 0; 5 a4 P1 O' S9 s1 V2 X }9 v. ]" |& Z* |; T( F else # r9 M, Q8 C/ _& Q0 ^ printf("\nCongratulations! device opened!\n\n");

    /****** build and send command **********/ ' o; t5 o( i8 \" C, K8 L2 y4 d printf("how many bytes do you want to access?"); % z; X4 O) L& s& Y: B& ] scanf("%x",&TotalLen); # m" C% M" I( s: |5 H0 O8 o- ] while(TotalLen > 0x7fff)( ~5 }2 Y) B5 T' I3 b$ Y9 M# d0 A6 c {; F+ r" K( J% K/ Q! {: I4 ` printf("pls input a hex data less than 08000\n"); ( i4 \' M' V. J& f; v3 p; t scanf("%x",&TotalLen); 7 K. u* R2 H# H; v } # a7 W2 j; d/ t H DataLenH=(USC)(TotalLen/0x100); //data length high bytes ' W9 H- p# b2 O: Q5 H. n' g3 Z DataLenL=(USC)(TotalLen%0x100); //data length low bytes

    printf("************************************************\n"); 4 k; Z+ c6 f. V printf("now program will write datas to ram on board\n"); 6 {1 z! d$ a" g u6 _ printf("total bytes of datas is %x\n",TotalLen);4 ~2 V& S* I: a, q printf("press any key to continue\n\n"); 5 n# c0 q, t8 c8 j getch(); $ C( ? q: b, B/*****************************************************************8 }: h) g: f! _3 S" B2 V( Y: c2 g now will build a write command packet * z C3 e- ^: c" Y- P' R! [9 i$ t with the first byte is 'w'.& s5 H+ D' Y( l- A* t% F: k and the following bytes are:! d) c- T8 w3 X; Z" Z9 x( X start ram address byte high, start ram address byte low, / m! [, o0 R7 ]3 P: ^. |1 L datalength byte high, data length byte low. % X) U0 J. g6 X- t8 k! ~ this packet will send to device through WritePipe1, " \ @, r! W$ u9 A$ c which is endpoint 2 of HW9911./ q5 l( l9 N" O when the device receive this command packet,4 K& c" B9 X1 U+ u. `8 o it will write TotalLen bytes data to Ram on the board , K- [; _2 S3 P4 t5 F& S******************************************************************/

    ( k" ]2 q5 ]9 K0 G I hCommandBuffer=(USC *)malloc(hCommandLength); & ]$ a4 o* u, |; e! d hDataBuffer=(USC *)malloc(hDataLength);9 U; E" g1 W, r! j' v! S% b hCommandBuffer[0] = 'w'; //read command' c, K9 T0 I' b hCommandBuffer[1] = StAddrH; 5 I; ]6 `1 f# G- ?, T. Q hCommandBuffer[2] = StAddrL; 0 y, e4 Z9 F) g0 a) j n hCommandBuffer[3] = DataLenH;. ^3 T4 q; k3 N& g# z2 R. C hCommandBuffer[4] = DataLenL;

    /* call hUSBIO() in hwdll.dll to send command packet to device*/ ; |& B* p( y$ L7 h/ V; J// hUSBIO 说明:6 a" m ^( {2 {* X1 |' [ // BOOL hOpenDevice(HANDLE *DeviceHandle, + v9 _* U, q2 s; I// unsigned char *IOBuffer,. L$ d( D0 g7 X% y // int BufferLength,3 y% ]3 m4 E$ P8 v: w // int PipeNumber,- K/ l% e9 X$ W( f* {9 { // int Action) ) p6 W% q) x" E3 D) T' M7 `// 作用:设备读写" K1 Q4 {. S5 B // 参数说明:- f* p! |/ i7 v9 Q& s // DeviceHandle:设备句柄& W! q; |( r( e; M% R // IOBuffer: 指向要传送的数据指针" C: M6 } @+ D5 @8 i# T2 e // BufferLength: 数据包长度 7 P( c8 d7 e( j* |( E// 对于发送缓存1、2和接收缓存1、2,BufferLength必须小于或等于32# W6 J; [1 M7 e) N+ l5 I // 对于发送缓存3和接收缓存3,BufferLength必须小于或等于64, n0 Y( k1 z7 R# g. l' w0 s# s // PipeNumber: 通道号 1 S$ _) `! R; W0 O* I9 q# x// 发送缓存1:PipeNumber=0; 3 F% P( M/ U" _: {// 接收缓存1:PipeNumber=1; , Q6 f8 S3 y* s! F* @* x// 发送缓存3:PipeNumber=2;9 {" a$ e8 @* }( f // 接收缓存3:PipeNumber=3;1 \, k9 c. u9 K2 d // Action: 读写标志。TRUE代表从设备读数据到主机3 a) }& _3 a5 @ J+ r) K: }- | // FALSE代表从主机发送数据到设备 5 S9 C) l' c8 t! a! x. v( k // 操作接收缓存,Action必须为FALSE * S, H, P9 d8 M' [: g; H7 w# e6 L// 操作发送缓存,Action必须为TRUE ) B; @) r1 a: t2 X$ O9 M7 L// 返回值:' q7 ?7 {4 y. b2 M! i: p/ L8 W8 e // 操作成功返回TRUE,失败返回FALSE

    if ( hUSBIO( &hDeviceHandle, 9 E3 G: y2 ^) r hCommandBuffer, 0 k, H1 h/ _6 U8 T5 j hCommandLength, ' {# A1 U, [ P0 _" S0 I hWritePipe1, ' h" ]" c* ~1 Y" |1 R) T FALSE) == TRUE) 2 _( s2 Z( o b3 p; P8 h {% |; M, W o- f; j5 S" ] printf("command 'w' writed to board\n");8 O. q' A! t& w/ Q% z1 K printf("now press any key to write datas to ram\n");. Z, g" Z$ P L2 W5 v; F6 G getch(); 7 K/ W( r% x0 j$ q1 _ e } - s& y: v: {3 i- C else 6 o5 y8 T0 G' o* v- a printf("data can't write to device\n");

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

    printf(" ");( ~- i9 u( S2 ^' t$ u H for(VertAddr=0;VertAddr<=0xf;VertAddr++): @; f+ {$ \. A7 ` printf("%02x ",VertAddr); " ]; c* J7 v y3 W5 y printf("\n");: n. e& F! P( J; `: z0 U, n addr=0; # ^: U6 n6 x; ^7 g% C- X while (addr<TotalLen) & G$ U$ T% P" d, J- B1 ]1 S, c; M {- }: E, r* \% i/ e. B( Z if (addr+hDataLength > TotalLen)" t: l* Z0 C2 o1 _! W) P/ O hDataLength = TotalLen-addr; ) }& g& K5 c+ c/ \7 E" h" o4 D+ f4 g for(i=0;i<hDataLength;i++) 2 t4 Z1 S! O d, {0 G5 q' Y& P Q { W: s4 U) S1 W( n0 c hDataBuffer=ch1++;" b& y3 I+ |4 K8 `, j- f: z g if (ch1 > 0x80) ( A" Z# |" b/ W0 \% Y$ `! K& e ch1 = 0x61;/ D& |( A! s' m: G }. }6 ` b# k( Y+ I* \8 A /* call hUSBIO to write datas to write pipe3, which , _# u% j! C4 M2 X* h9 Z1 m1 G is endoint 6 of HW9911*/

    if ( hUSBIO( &hDeviceHandle,3 v$ U' I: {% ~4 e3 b7 `' | hDataBuffer,0 l" _! h- g5 k* ?5 S7 D: H1 W hDataLength,* u4 r. ?- @; v hWritePipe3, + S+ M+ G7 R: J- j! _6 ~ FALSE) == TRUE) //FALSE means Write operate ( H/ Z1 M& v! X n: ?3 r { 0 U8 \$ ?; X, b for(i=0;i<hDataLength;i++) 6 T: r3 y/ z' k+ ?8 h7 i { 4 D$ [* Q1 t8 s1 ]/* print format control */ % b3 L/ K5 K& v$ O4 } if(i % 16 == 0) : T+ m2 r# G' _0 I+ h; Z% @! s6 W { : V: N/ A, o( J' V printf("\n%04x ",HorAddr);+ j4 V5 M, f! x HorAddr=HorAddr+16; 0 A% T P0 A- C5 E } + ` N S4 p4 c5 ?; ]6 F printf("%02x ",(USC)hDataBuffer); / ]: S \$ T5 o- {$ K! z* c }0 R0 ]! } i/ o& r2 d9 K addr=addr+hDataLength;1 K9 Q8 G- V' r7 \3 Z6 C } - h8 g7 b- c# n" a5 q7 A' e8 p else5 H( ?. P8 h8 [; |0 f( @ {1 r3 ~7 F s( c% e printf("can't write to board\n"); 9 @& |7 ~5 U3 B4 }! _6 U. Y exit(0);3 R+ U% o: q! F6 i }9 c: w- S/ n0 j0 E1 C: ] }7 g2 }0 P5 J0 L, } m6 M printf("\n\nTotal%x bytes write to ram OK\n\n",TotalLen);

    5 D# [6 T `5 `+ J* B- z ; d( T6 N, k) d) kTop * A4 S0 s y4 n6 M: O ; e( m8 x; u* x 回复人: HUANG_JH(保卫钓鱼岛) ( ) 信誉:115 2003-12-17 9:50:51 得分:0 / D4 A6 S. J: H5 _# v 9 l+ ^* W. V/ e 4 l1 [3 |9 B* z$ v8 K0 D) z

    /*****************************************************************- \7 s7 a' \( {8 |# P# C now will build a read command packet 7 D: w! i9 Z, x9 r$ i4 w with the first byte is 'R'./ o! {6 {& {% U" i! m. Y9 R and the following bytes are:9 F% R" h& v" B/ C% X% ` start ram address byte high, start ram address byte low, , g7 r4 B& D3 I5 O4 m' L4 R datalength byte high, data length byte low. / p f ]+ X3 P3 q: c* p& T' Z this packet will send to device through WritePipe1,7 [" E, r" t2 _! d+ f which is endpoint 2 of HW9911. / f' I) T. Y$ [7 N! k2 ~; d- A when the device receive this command packet, " x% O z- M5 I8 q* l C1 m it will read TotalLen bytes data from Ram on the board : `2 L: {! e, V( R******************************************************************/

    printf("************************************************\n");& B+ v8 f/ i- U/ r2 p+ {( J printf("now program will read datas from ram on board\n");! Z3 J: r: |; k2 \ printf("total bytes of datas is %x\n",TotalLen); f% P0 W, |$ g printf("press any key to continue\n\n");" \1 w1 a4 A" |& O5 G getch(); 7 i6 l' R& I7 S: l hDataLength=64; v; R B5 H' @1 j, e hCommandBuffer[0] = 'r'; //read command9 U. K* a1 i$ c5 e7 @$ ` hCommandBuffer[1] = StAddrH; * l% Y U% p2 j hCommandBuffer[2] = StAddrL; - [ g5 @3 f { hCommandBuffer[3] = DataLenH;9 M. M/ L2 a( x8 {4 v hCommandBuffer[4] = DataLenL; 0 c! i# N# s& L2 F7 W- H: ~/* call hUSBIO to send packet */ 5 [7 e# R& O4 L/ V4 \4 R, t% o6 v if ( hUSBIO( &hDeviceHandle,% k- ^7 `% ]4 }0 g E hCommandBuffer,, H7 J9 b7 d2 Q hCommandLength,' ~0 S9 a: a' O3 V7 u& H: ~) s3 j! e; H4 n hWritePipe1,; j( M2 Y. I) L6 J r- s- h FALSE) == TRUE) ) z( p2 x( v" Q { ( t' `6 \& X6 c$ V printf("command 'r' writed to board\n"); % i+ I" B* f0 p7 o+ w' `! ]& j printf("now press any key to read datas from ram\n\n"); 6 ]2 o7 x F; ~8 q, w" t getch();: x3 K. P2 X4 C# ~+ v2 z8 A- t }! N$ t9 ^! I, f7 s; k; ` else' p& P4 v, E. | j5 z1 } printf("data can't write to device\n");

    /******** read ram data form board **********/# p& p4 a9 ^( a printf(" "); 4 X* ?. `9 R# ]7 d for(VertAddr=0;VertAddr<=0xf;VertAddr++)% ~# C! C% j" [ printf("%02x ",VertAddr); & X$ M1 V- l0 A! G9 T printf("\n");' S* z3 s+ ^' v9 P4 Y- e1 j addr=0; 9 o3 m: M, J' l+ q1 y HorAddr=0;( V+ |6 p1 j. W while (addr<TotalLen) # z/ c7 k' P1 N; I* I, M- R { ' N- N% N% V5 Y/ }* d' g if (addr+hDataLength > TotalLen) 7 y. Y+ X9 R$ P7 [) A6 Q hDataLength = TotalLen-addr; , Y5 V: m% w( f, p/* call hUSBIO to read datas from board */ 3 [6 e; P) E& x if ( hUSBIO( &hDeviceHandle, . G- Y6 \: y: n/ F( k4 |6 W hDataBuffer, " Q0 d$ }* M$ f+ ^4 l; d$ d( I+ w hDataLength, . S) Y, ~3 v8 _' Y- j hReadPipe3, 7 h3 e+ E( R; }: u3 |8 x' @ k TRUE) == TRUE) //TRUE means Read Operate: ^# d0 y" _$ v9 ^5 B4 d {6 P! J) L/ W& q4 B) ~ for(i=0;i<hDataLength;i++) ! K. {& p9 U$ l" T, D6 N, f1 m; ? { : S( ~% Q, O* m- Y. w/* print format control */ e' Q+ M( B! R6 \) T if(i % 16 == 0) 5 G* D9 j% f% ^ @ {9 {# v. H; a: V printf("\n%04x ",HorAddr); - {( L7 @: W u/ B s1 X# \ HorAddr=HorAddr+16;( ^) l" f, {6 Q: U } # {' P. G+ E$ C7 s; y9 _. t6 o printf("%02x ",(USC)hDataBuffer);; l, A6 |% ~" ]$ D4 C } ) o) M$ f6 t& |9 _3 m- A8 s addr=addr+hDataLength; 9 T6 U5 l a: k2 G9 K } ! P/ P8 x1 R9 S8 h3 V# L else , l E _ U# g2 E7 `: G/ A { - `& Y, t9 O+ a6 P printf("can't read from board\n"); 1 Z" _4 d v% P) u( N$ h9 V exit(0);3 r5 C4 s+ h1 p } - n/ ^; ^$ |4 J* `5 _ } & c& H) J& Y* C/ I$ M' ]' d1 y+ F0 R( H printf("\n\n");7 Y6 Q' Q4 ?$ X4 r6 v2 l5 }0 ^ printf("%x bytes read from ram OK\n\n",TotalLen);

    /*****************************************************/ 4 q% A) m' q2 _ i0 d q7 y/* process rs232 test */$ s# I: W% _* I6 g; D4 m: n /* the first byte in this packet is command 's' */ , k* z) u9 d+ g8 t1 X/* and the following 2 bytes are used to set */) w4 L; S n# k5 `& Q ] /* the baud rate of 8051 */3 r9 _% I! ^! w /* they will be write to TH1 and TL1 respectively*/9 z# _+ K, {( k8 R( E6 f( ~ {' x /* the following bytes are datas will be */ , ~( }3 S; `7 n1 e/* send through RS232 serial poart */ 4 c) ^+ w1 T' e B/ \0 e: m; v+ A/*****************************************************/: \- v3 ^$ T6 _6 f- s0 J printf("\npress any key to process RS232 Test\n");2 {7 H- a& |. T& ^ getch(); 8 R. @2 N- A/ Y $ \8 g; w) _# q* H. H USC TH1,TL1;! z+ E+ m4 {' T) H' g+ n! [% j0 z char hStr[30]; 9 ~% }6 {! u& f+ _) U. k6 w7 v TH1=(USC)(BD9600/0x100); " f6 C p* Y5 y! b/ }5 B5 J% ? TL1=(USC)(BD9600%0x100); - G2 x; F$ ? _: u& ]& C c8 V Q hCommandBuffer[0] = 's'; //read command- T4 G5 P" v2 X2 @ hCommandBuffer[1] = TH1; - ~+ e1 j' F) g- ^- u8 [ hCommandBuffer[2] = TL1; //start address is 0x0000

    strcpy(hStr, "Hi, dear HW9911 consumers! ");. w! N0 x z4 q* s4 u* Z printf("Hi, dear HW9911 consumers! "); * o1 s# e( q9 B; U0 \0 A( i memcpy(&(hCommandBuffer[3]),hStr,27);

    if ( hUSBIO( &hDeviceHandle, ) ]2 L# r3 f- Z& ]( n& W Y; m hCommandBuffer, 5 Q! M* O% h0 |; M# R 30, ; P' `+ B9 s8 r hWritePipe1,: H/ f+ t. k% [9 c, m* x FALSE) == FALSE) * [& m/ K) g, ~2 U7 E% ]' v( W { , s! N* i; L4 l- ]* a8 H printf("can't write datas to RS232\n");5 O0 p$ H, {- C. J exit(0);; k4 Q( q% {1 {/ X }

    strcpy(hStr, "I'm HW9911 Evaluation Board, ");$ y" ~7 w0 g* u' V printf("I'm HW9911 Evaluation Board, "); 2 C' a0 {7 S' O6 X2 A memcpy(&(hCommandBuffer[3]),hStr,29);# k2 v$ }$ V# }! d/ f 5 h2 l, G1 r3 i. b! r2 h if ( hUSBIO( &hDeviceHandle, ) p- }& m2 @- ` hCommandBuffer,) o# j( }1 L2 M+ r4 h$ q2 e$ L 32,# E7 a/ s! p5 j" g6 }5 h hWritePipe1,$ i. |3 g/ h7 \: T' _/ d3 `5 }6 x FALSE) == FALSE) % G9 F+ }, b' W/ f8 y" t( T7 c/ X { 7 N8 z7 R9 s5 G4 M* R3 [2 V printf("can't write datas to RS232\n");: L5 B; J7 W$ V/ H8 z o% Y exit(0); : H/ j. h# o* J; t; h5 s6 o5 i }

    strcpy(hStr, "thanks for purchasing me, ");! S0 c% W9 Y7 G0 A$ g9 G printf("thanks for purchasing me, "); 3 }0 Y4 S4 q: ]9 X4 g, x8 U memcpy(&(hCommandBuffer[3]),hStr,26);4 i5 S: o" R0 c& B' w# W; c8 W6 P / w/ `0 Z- k/ K0 R if ( hUSBIO( &hDeviceHandle, & k5 T4 W% ` d$ W3 h' X' [7 I% r5 l hCommandBuffer,7 a2 a; I7 R0 P 29,& s6 L+ u) V9 a% g* q hWritePipe1, # N5 a( I4 I; @8 t$ { FALSE) == FALSE), ~' k6 T4 O2 H( G {7 E' @, m* `8 B# J. Q printf("can't write datas to RS232\n"); ( _3 _; z" Z7 m: {6 p6 ] exit(0);: d* i* G3 v! ~& N. s* e } , m/ E$ Q" R9 C0 c ' t3 H& N1 u, X$ O$ ~& U+ Y strcpy(hStr, "If you meet some problems, "); 3 a. M) |2 w9 L: l2 P printf(hStr, "If you meet some problems, ");% @9 D- ~5 T, v8 l8 Z memcpy(&(hCommandBuffer[3]),hStr,27); 3 A' v1 C. H0 G0 Q9 Q 7 f9 o. X! @9 Z! {* @8 B5 ]& l if ( hUSBIO( &hDeviceHandle, 9 S, A: b k y3 { hCommandBuffer,# x3 m& q! }1 |/ |3 w 30, . w" k1 K+ O, ?8 i) u# } hWritePipe1,# _7 ]1 a% O5 _( j$ V" F FALSE) == FALSE); a0 N5 y1 r9 V( }9 A2 q {2 l: f0 d3 T1 D) L$ d( f printf("can't write datas to RS232\n");( e3 O5 D* I) v7 z9 C' ^, O exit(0); 7 D: Z$ o! p% Z M6 h1 { }

    strcpy(hStr, "pls contact my designer "); 6 w% g" y$ ~7 g printf("pls contact my designer ");7 i. T0 K! e# ]* x8 {1 N6 n6 n memcpy(&(hCommandBuffer[3]),hStr,24);7 h2 |( t8 i$ |9 N9 O7 y* d; O 9 @9 m2 {2 s- f! P+ [6 a+ G if ( hUSBIO( &hDeviceHandle, , H: Q" M! M0 |5 Z hCommandBuffer,2 g- ]( |2 T& b3 W: G: p! F 27, 4 S9 X. X; |. U, v R0 c hWritePipe1, 7 x$ f: h- |5 B' u FALSE) == FALSE)& T1 y" G- e5 ~ {2 s: Z- o0 y8 D, B printf("can't write datas to RS232\n"); 3 V" I; t8 e# f0 X exit(0);& G& P! r% e4 Q" D) [ }

    strcpy(hStr, "by email: hugehard@263.net."); 1 Z7 o1 U' U1 {9 M; C7 Q* |' e7 T8 g printf("by email: hugehard@263.net.\n");9 \( J+ A. h) ^' G# D6 n+ N memcpy(&(hCommandBuffer[3]),hStr,27); 3 N7 ]8 J9 j# ]6 [- I: U 3 q* h" i0 e! N: G4 Y if ( hUSBIO( &hDeviceHandle,! O; d! m& [4 L" C& i hCommandBuffer, ) M6 ^& [6 a$ |/ ? c0 a. b: x 30, - n+ z" B1 G) J# y7 M# V4 v hWritePipe1, / \ Q& Y) H9 Y5 v FALSE) == FALSE)$ s% ?# V4 `( n }% O# B {* n) H) N* L) D0 Z printf("can't write datas to RS232\n");3 {' {6 N+ l y, y/ t exit(0);. Y$ S( W e& u$ L3 i }7 J9 H" |9 L- D7 C8 o6 ?. C /********* call hDeviceOpen in hwdll.dll to open the board***/ : p. x$ }) K4 D2 o// hCloseDevice 说明:- D# q7 H6 K% P) E, ? // BOOL hCloseDevice(HANDLE *DeviceHandle)- [& u% q( u$ I1 F2 K( A // 作用:关闭设备+ m" _" L% p6 [2 X, C // 参数说明: 6 j$ S6 k, b3 v' H: v$ p. s// DeviceHandle:设备句柄# Z6 R7 C$ q& R) B8 E // 返回值: ( M+ L; o$ q3 W( X r7 V// 设备关闭成功返回 TRUE,失败则返回FALSE0 M* L8 q* n( p2 p4 H if( (hOpen = hCloseDevice( &hDeviceHandle ))==FALSE) 8 m% Y; {: `8 T. O { & ?" n$ ]! w9 X6 J printf("can't open device\n"); " q, X z; m" z9 ~* Y printf("press any key to exit\n");. p/ v$ K% r& r( G getch(); % K1 K3 i4 m7 `$ W# W" ~; ~8 k X return 0; $ J( u% M8 M: ?8 v5 c2 h6 j }! u5 O- L. v" G+ t$ O+ f, O else $ m: a4 w9 |6 V8 F; } printf("device closed\n");

    printf("press any key to exit the program\n");: j6 x6 N7 r/ J8 L, d$ i free(hDataBuffer);9 O6 ?6 p1 A' V! N3 j) D free(hCommandBuffer); $ y- k; T- D1 ~# J2 u( r5 w getch();( o, u- s7 z3 ~: l5 O5 v3 J return 0; ) i# T) G6 s- [% U0 t' `" S4 X}

    9 |$ I3 ^+ X T% }' S ) \) g8 q H' W * h0 G. m9 C0 RTop " r! K3 `' F" t6 D' c2 o , f2 O2 H! n p7 V, f 回复人: aiyu33() ( ) 信誉:100 2003-12-17 11:41:24 得分:0 2 V+ O, A4 l; v# O+ N/ b _% j: T, o* O1 c- P o . Z5 v8 S. F7 [: o/ b1 A ' h$ l# Z, k" `% x. ?upupupupupupup

    3 G( q6 q" [+ w4 K8 D . x- @: n# W1 D; GTop % E. X/ F6 g, H y/ K6 J 3 w6 {4 `$ E2 N, D% A& E% F 回复人: kingcaiyao(AKing) ( ) 信誉:110 2003-12-17 12:53:39 得分:0 + s7 A8 Z0 r2 |; K1 W! N$ Y# B) E ) S' N( {, t- u+ g + p1 r+ m0 ]9 h1 P " H4 {0 [7 B; c6 d0 G你开发的这种软件类似于Palm Desktop Software,负责Pocket与PC之间通讯,我建议你最好先写一个驱动,将USB口虚拟成一个串口,然后直接对串口操作会很方便的。我现在做的程序可能和你相似是一个CDMA模块,通过USB口与PC机连接,然后由驱动程序将它虚拟成一个串口,我的工作就是和这个虚拟的串口通讯。

    5 c6 Z9 v# T( ?/ h' e, r/ |1 X , ]; D" J- H8 u3 QTop 8 {4 _, Z4 H: n: p4 _5 i & i* A4 [: N, R+ r: x0 j5 m/ x 回复人: kingcaiyao(AKing) ( ) 信誉:110 2003-12-17 12:56:27 得分:0 8 Y( u2 O y, ]* X) A/ v4 Q6 U ; z$ C( ?3 E( p6 k5 ^8 D+ K " }$ _3 Q" E+ S" Q. N w) y! ?9 m ; O7 q8 v, G" ?7 Q) W* MPocket与PC连接肯定有驱动的,如果驱动程序没有将Pocket虚拟成一个串口,你也可以直接通过设备GUID和设备序列号进行访问,详情你参见我专栏上的一篇文章。当然了,通过虚拟串口来访问设备肯定要方便,简单些。

    * T4 |+ M8 P( q7 |. i' R, x9 l ! h5 Z' w6 \4 U6 Y: }Top * E3 w4 Z1 I$ y& ^ ' E( W# {0 s! E( w5 D9 K& D 回复人: aiyu33() ( ) 信誉:100 2003-12-17 13:31:08 得分:0 " V! k9 m7 ?5 w) h& F9 } - O, U3 k$ }/ X) [9 Z5 u0 i 7 ]$ l. `! i& y1 s+ ?& k# G" m ! Z6 c5 _9 }( z1 r( I我得这款pocketpc默认只支持使用usb与pc相连的,而且activesync3.7就是使用usb传输数据的。如果我自己写驱动的话,不仅不熟悉而且很可能activesync3.7这个软件就使用不了。我只需要利用它的驱动。你的专栏上的那篇文章我也看了,我就是模仿你的写的代码,但就是到createfile这步就不行了,我的同事是用palm开发类似的程序,也是到这步就行不通了,是不是有其他的原因?: n4 H# b: F/ D' ~ 我还想问问如果驱动程序将pocket虚拟成串口,如何查看它的符号名呢?

    2 }+ i/ E! x2 h! p- E/ }' P / ?& [: c b- r4 x. { % p2 U U1 N7 z2 [) N Top 7 S* x$ p- v6 d; t8 u0 B * E/ x2 U0 k; _$ A# c. N# W0 S 回复人: kingcaiyao(AKing) ( ) 信誉:110 2003-12-17 16:53:17 得分:0 : P8 C7 t$ s' g% G 1 j6 f9 h% ?! N! q3 E u9 H7 j ( A/ E% M9 U, p8 H; S$ X) C ) T- Q- G4 I* d0 z. M 假如将一个USB设备虚拟成串口的话,那么它的符号名可能是COM3,COM4,或COMn,这根据你当前PC机的配置而定 。它的符号名位于注册表中HKEY_LOCAL_MACHINE\CurrentControlSet中,你可以搜索注册表,另外在2000或以上的操作系统中,你可以到HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SerialComm中看到。

    + K3 W9 ^/ D0 m 5 {1 a5 m' j. b- C3 W2 gTop - q0 h: x/ X' B# P' P1 I: d- h$ @ . x _0 e0 ] U' G7 g 回复人: kingcaiyao(AKing) ( ) 信誉:110 2003-12-17 16:55:33 得分:0 2 d; a( ^$ J2 G- D6 E+ `) [* B * @; X: t! s4 |% N " I9 m6 z* Z. @* j X" Q7 j 1 z( M: J. J4 X, r M我以前在一张贴子中详细回答了如何利用设备序列号和设备GUID来访问该设备,你可以搜索一下CSDN。你所说的CreateFile不能打通设备,你要查一下,你的符号名是否正确,包括设备序列号和设备GUID是否正确,设备GUID你可以从驱动程序的安装向导文件.inf中找到,设备序列号则需要你到注册表中去找。

    5 b7 G& m) A5 X E: }, C. j6 f ( }4 `# S% R! I: {! H( c# I! }Top $ |5 r9 {4 x4 ?3 E' } 2 W' \0 Q, p" \9 O, |* Z9 L* v 回复人: gyj_china(透明) ( ) 信誉:98 2003-12-17 18:15:30 得分:90 ) n6 V* c9 J4 q5 G2 p % }" Z/ @7 C, [* ^/ A9 t T : v7 ~0 S9 Q0 W5 I% K7 I : g; Q# D: C6 h$ Y* v' J& H2 ~) p 没有星星不敢发言:(

    , @1 J9 {# x _2 x2 ^; v: B# Z # a7 {0 y/ f$ R Top 7 n& _) N% K0 X) g1 T$ m8 a ; W i$ V0 Y/ H6 ?8 K 回复人: aiyu33() ( ) 信誉:100 2003-12-19 18:27:28 得分:0 o( l- J. {7 V2 m v ; E$ d _( e# u R + v- @- A; a- j$ l4 _ ! l4 `! [: j% [( X0 N1 ?不好意思,是因为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-4-16 10:29 , Processed in 0.573145 second(s), 100 queries .

    回顶部