QQ登录

只需要一步,快速开始

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

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

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

10

主题

1

听众

98

积分

升级  97.89%

该用户从未签到

新人进步奖

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

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

: u6 A4 h {4 j+ Z

我暈,看來這回死定了

3 O# j" [0 Z- e6 K# h' l9 {

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

( D0 S; G- c, f4 m

老大救命哦

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

10

主题

1

听众

98

积分

升级  97.89%

该用户从未签到

新人进步奖

回复

使用道具 举报

ilikenba 实名认证       

1万

主题

49

听众

2万

积分

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

    [LV.10]以坛为家III

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

    群组万里江山

    群组sas讨论小组

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

    群组C 语言讨论组

    群组Matlab讨论组

    API之打印函数:+ I4 z7 o" \! U6 A AbortDoc 取消一份文档的打印 - _: d! o N, h. W) J7 E" [1 G AbortPrinter 删除与一台打印机关联在一起的缓冲文件 6 u7 a# u* K* ?" mAddForm 为打印机的表单列表添加一个新表单 ! M2 s0 k% i* k! y- \ AddJob 用于获取一个有效的路径名,以便用它为作业创建一个后台打印文件。它也会为作业分配一个作业编号 5 o9 h8 ?: n- l3 `+ v9 ]AddMonitor 为系统添加一个打印机监视器 ( E; A9 f5 T% { ~AddPort 启动“添加端口”对话框,允许用户在系统可用端口列表中加入一个新端口 9 E7 t, A/ h# `# q7 Z: Z6 a- tAddPrinter 在系统中添加一台新打印机 , J& g" k- `8 ~AddPrinterConnection 连接指定的打印机 ; R3 X1 M9 w& C3 F( P; L AddPrinterDriver 为指定的系统添加一个打印驱动程序 8 ?; B7 ~$ O% I5 g AddPrintProcessor 为指定的系统添加一个打印处理器 9 }+ w# a. I% L* o7 AAddPrintProvidor 为系统添加一个打印供应商 9 h7 ?6 b0 j; g$ S) v' Z' \# bAdvancedDocumentProperties 启动打印机文档设置对话框 6 n7 Y! j+ l' t' f ClosePrinter 关闭一个打开的打印机对象 ) b, a5 E$ d2 ?: F E3 KConfigurePort 针对指定的端口,启动一个端口配置对话框 : `8 y) |% K$ N, m0 \, G4 l! y2 K6 @ ConnectToPrinterDlg 启动连接打印机对话框,用它同访问网络的打印机连接 + e2 M% O4 T1 O+ {6 ?2 Y4 F0 I3 M2 h IDeleteForm 从打印机可用表单列表中删除一个表单 [7 l- V' o* ~5 S, |) L DeleteMonitor 删除指定的打印监视器 ; x! U3 O$ Q* d0 f DeletePort 启动“删除端口”对话框,允许用户从当前系统删除一个端口 4 |$ y6 f- ~6 i4 ? DeletePrinter 将指定的打印机标志为从系统中删除 2 N5 W6 r) I* Z' f, w7 GDeletePrinterConnection 删除与指定打印机的连接 ) M; A3 B) X' R W1 GDeletePrinterDriver 从系统删除一个打印机驱动程序 ( [. f' P V4 L9 x" v DeletePrintProcessor 从指定系统删除一个打印处理器 5 Z7 O2 ~" l6 }! y: q DeletePrintProvidor 从系统中删除一个打印供应商 6 M& K$ m# c* u" P& {4 ^, S7 f5 QDeviceCapabilities 利用这个函数可获得与一个设备的能力有关的信息 % q3 C( F; j! ` DocumentProperties 打印机配置控制函数 0 N* F) S! U: ?# i3 x8 ZEndDocAPI 结束一个成功的打印作业 / a. |4 \* G& M) E* QEndDocPrinter 在后台打印程序的级别指定一个文档的结束 ( g) V J+ B( EEndPage 用这个函数完成一个页面的打印,并准备设备场景,以便打印下一个页 2 H" C$ W( N8 N) |+ Q0 f* | EndPagePrinter 指定一个页在打印作业中的结尾 $ r2 z; O5 X6 ~) N+ V4 ~EnumForms 枚举一台打印机可用的表单 5 @- k; j0 d" OEnumJobs 枚举打印队列中的作业 9 W% z$ x( r+ m: R* k/ h EnumMonitors 枚举可用的打印监视器 - {1 G+ l" B; `: e EnumPorts 枚举一个系统可用的端口 ( y; O- g& h6 Z- D8 x( O EnumPrinterDrivers 枚举指定系统中已安装的打印机驱动程序 ; B+ Q1 a7 f" \EnumPrinters 枚举系统中安装的打印机 6 @5 k. k u. x$ \8 } EnumPrintProcessorDatatypes 枚举由一个打印处理器支持的数据类型 0 K5 R$ w7 S# i/ T EnumPrintProcessors 枚举系统中可用的打印处理器 ' e9 H8 h; q$ k' yEscape 设备控制函数 0 |5 J5 D: f$ c FindClosePrinterChangeNotification 关闭用FindFirstPrinterChangeNotification函数获取的一个打印机通告对象 0 o& k! _, }1 F9 w: Z* x, g8 CFindFirstPrinterChangeNotification 创建一个新的改变通告对象,以便我们注意打印机状态的各种变化 , t& }4 `9 D0 o N- J3 Z& U, IFindNextPrinterChangeNotification 用这个函数判断触发一次打印机改变通告信号的原因 : e( V2 ?8 w' s" N( n FreePrinterNotifyInfo 释放由FindNextPrinterChangeNotification函数分配的一个缓冲区 . v1 `& s- _9 L6 i: }/ GGetForm 取得与指定表单有关的信息 1 a/ k3 P$ N, v* U' K" [# P GetJob 获取与指定作业有关的信息 - B& T) f6 D8 Z/ m- ^ GetPrinter 取得与指定打印机有关的信息 . B1 [2 y, Z; t GetPrinterData 为打印机设置注册表配置信息 ( \* }# g; A& A. N! qGetPrinterDriver 针对指定的打印机,获取与打印机驱动程序有关的信息 1 Q9 y4 D& H0 M" u+ a4 s- B- @ GetPrinterDriverDirectory 判断指定系统中包含了打印机驱动程序的目录是什么 + c& }2 R* f* x4 U4 n+ `# R2 ^GetPrintProcessorDirectory 判断指定系统中包含了打印机处理器驱动程序及文件的目录 3 M8 W: X2 k g OpenPrinter 打开指定的打印机,并获取打印机的句柄 $ I& H, y3 l3 n# `) m9 }PrinterMessageBox 在拥有指定打印作业的系统上显示一个打印机出错消息框 2 G4 V7 x/ }- J' b/ `6 ] PrinterProperties 启动打印机属性对话框,以便对打印机进行配置 2 H: P2 ]- U1 O* i9 D/ S, r. r ReadPrinter 从打印机读入数据 4 p" P$ ] u! o ResetDC 重设一个设备场景 . Y2 @1 H: w# B( \" l. V ResetPrinter 改变指定打印机的默认数据类型及文档设置 ) t+ b- D! k y: s7 |3 h' }- e3 Q ScheduleJob 提交一个要打印的作业 , U6 I6 Q. x3 F& |, l5 xSetAbortProc 为Windows指定取消函数的地址 * F8 C) e( v* D- F' n* J- b SetForm 为指定的表单设置信息 2 O8 Q/ s r: Y3 f/ r% eSetJob 对一个打印作业的状态进行控制 ' A1 j/ [9 l8 @SetPrinter 对一台打印机的状态进行控制 3 z8 B4 D9 \$ { x% O" Y1 S* Q" ^" ^ SetPrinterData 设置打印机的注册表配置信息 ( P' |. G7 t8 y& f6 N* W* cStartDoc 开始一个打印作业 " p' h0 W' B0 J- K1 o6 @9 NStartDocPrinter 在后台打印的级别启动一个新文档 7 b( y6 M! x I; ]1 \) QStartPage 打印一个新页前要先调用这个函数 ; H. }6 c) Z- M; RStartPagePrinter 在打印作业中指定一个新页的开始 ; m' y4 h1 l1 l$ @4 U( x: h* b ZWritePrinter 将发送目录中的数据写入打印机 P/ u6 ^( m/ ?/ B% [, y! `# @

    回复

    使用道具 举报

    ilikenba 实名认证       

    1万

    主题

    49

    听众

    2万

    积分

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

    [LV.10]以坛为家III

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

    群组万里江山

    群组sas讨论小组

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

    群组C 语言讨论组

    群组Matlab讨论组

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

    主  题: 关于usb通讯方面的问题。请AKing大哥及相关高手来看看,万分感激!!! ) H6 n/ c; z7 F* z2 `$ @4 l9 U; N6 | 作  者: aiyu33 () 6 Y5 }. u5 {8 ^2 g- S 等  级: ( f5 k8 b6 h; x* F% ` 信 誉 值: 100 6 \& V$ G1 v8 R3 a所属论坛: C++ Builder Windows SDK/API 4 C i6 B& p/ H9 x' K& W问题点数: 100 5 I8 R3 O: i! u- b0 c& l* s; M x. S6 \7 m 回复次数: 12 % O0 T+ n, \* g2 k" F* ] o发表时间: 2003-12-16 20:43:13 : m" q3 h9 p" j6 K6 |: ^ ; k/ A% _# ~% m7 z - T: W1 {( a5 e

    最今我接到了开发pc和pocket pc通过usb口通讯的任务。这两个星期我参考了很多方面的资料,特别是AKing大哥写的一些文章。但我始终没有打通这个关口,我贴出我的代码请AKing大哥看看,现在很急,多谢。 ( h. ^6 F) ~6 W3 ^5 K2 ]! ~pc的os是windows2000professional ! R+ F% G+ X' X) ]: U3 ipocket pc是hp ipaq 2210,os 是pocket pc2003。 - }! g9 s3 P/ I$ y* n我装了activesync3.7。我查看过了,这个activesync目录下有pocket pc的驱动程序。pc也能识别。: c) W8 m% k8 f 下面是我在pc上调用usb的代码。% I- }* U* h4 @+ `# r2 E+ i 下面的代码我能打开hidn类型的usb,但是就是不能打开pocket pc的usb。 , i; v4 Y+ Q: D7 A. I1 s//classGuid = {25dbce51-6c8f-4a72-8a6d-b54c2b4fc835} . b7 s* ?- X. A. c$ @DEFINE_GUID(GUID_CLASS_PALM, % c, V0 W+ A, b% V8 e% R 0x25dbce51, 0x6c8f, 0x4a72, 0x8a, 0x6d, 0xb5, 0x4c, 0x2b, ! e+ H) T; X% ` S/ c. G: P 0x4f, 0xc8, 0x35);, d9 [9 N- r0 ^! p! w0 p GUID HidGuid = GUID_CLASS_PALM;) u& k8 D& v2 T1 R: ^: U HANDLE Get_DeviceHandle( GUID* pGuid)+ \8 {$ u- Y, L { , U" y2 q( `# i- z( \0 i , _& C: R" S6 P- } HDEVINFO info = SetupDiGetClassDevs(pGuid, NULL, NULL, DIGCF_PRESENT | DIGCF_INTERFACEDEVICE);0 W+ ^/ c3 n5 ^) O% d # D. c3 X! w `3 B8 {) W if(info==INVALID_HANDLE_VALUE)8 Z, F) }4 e9 m5 s- s( r& ]& s5 T) ` {: z3 Z8 B& G8 B) k% I. z8 R: B printf("No HDEVINFO available for this GUID\n");" G' u' e9 }6 d; O9 O, L( d return NULL; * E _( v0 B% T" I }0 Y, @7 d: C) V6 o& _ SP_INTERFACE_DEVICE_DATA ifdata; / m: h* G4 P" v- |4 `( ]3 j, P# } ifdata.cbSize = sizeof(ifdata); 0 [' P# B" U3 ?//0000是我在注册表中找到的序号 7 g' M) t' {9 e0 ` if(!SetupDiEnumDeviceInterfaces(info, NULL, pGuid, 0000, &ifdata)) ( }6 T% O0 D8 C { ( x! { M* C, f printf("No SP_INTERFACE_DEVICE_DATA available for this GUID instance %d \n", instance+1);: Q: s3 e1 K6 I9 V7 A6 Y4 @ SetupDiDestroyDeviceInfoList(info); - ^0 N7 d0 ]" z( e4 H9 O& z' h return NULL; 7 h8 `& u$ Q1 K* B6 L }

    // Get size of symbolic link name - q" C0 v1 _9 Z$ d0 T- Z) U DWORD ReqLen; ; c0 v' \ @% _+ r# ?. a* ~ # ^6 U0 \9 q. G/ r" [5 u! w* U% N SetupDiGetDeviceInterfaceDetail(info, &ifdata, NULL, 0, &ReqLen, NULL);; D$ d9 e& f" i* ^3 J 8 `3 p/ z2 n2 X2 Q PSP_INTERFACE_DEVICE_DETAIL_DATA ifDetail = (PSP_INTERFACE_DEVICE_DETAIL_DATA)(new char[ReqLen]);8 d% n0 z1 P) l- g # @+ k$ L0 _: U8 n( E S" V if( ifDetail==NULL) 3 H- z/ i4 ^8 @ n9 T { % X) m- `% M# D: c9 D# g( T SetupDiDestroyDeviceInfoList(info);8 |% L. R- m3 a2 z0 \4 s# H/ B return NULL; ! |4 Z" l6 E2 u2 ] }

    // Get symbolic link name9 P5 h6 z D. \$ I; a, X; F ifDetail->cbSize = sizeof(SP_INTERFACE_DEVICE_DETAIL_DATA); + j6 C9 T7 R; |( z- Y4 ~4 H. I+ p ; q+ m; K2 F) `3 u- | if( !SetupDiGetDeviceInterfaceDetail(info, &ifdata, ifDetail, ReqLen, NULL, NULL)) S6 ?. ^9 h! g- s1 | { , I5 y) U9 ]0 @: q! a. q SetupDiDestroyDeviceInfoList(info); 1 L- F! n( R2 y$ U delete ifDetail; 8 O& L I' w4 P+ T! U2 r return NULL; . x! x% V# W0 L4 `$ o }

    printf("Symbolic link is %s\n",ifDetail->DevicePath); 4 h3 I# Q/ X3 q9 T( R; O$ B' o: ^) x

    /*\\?\\usb#vid_03f0&pid_1016#5&1bc41f6c&0&1#{25DBCE51-6C8F-4A72-8A6D-B54C2B4FC835}这是ifDetail->DevicePath的内容*/ # T }, k. ?9 Z X // Open file % I3 @6 j! }/ y+ q. V5 }//前面都很正常但就是下面始终得出一个无效的句柄,我也就无法开展下一步的工作. + g1 e! A6 f1 m) p# y HANDLE pDevice = CreateFile(& _1 d1 |. i$ Q3 d' Z3 A ifDetail->DevicePath, : p6 p$ l6 ?1 X! ~2 p GENERIC_READ | GENERIC_WRITE, 3 |8 i2 n* s5 I7 S FILE_SHARE_READ | FILE_SHARE_WRITE, / T0 @7 h/ A+ i' J. P/ f NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);, y2 x& E* S/ t' {+ V- v4 }. B 0 x2 z6 q* C1 j; Q. w if( pDevice==INVALID_HANDLE_VALUE) pDevice = NULL;& m% C6 ^2 {2 Q) z9 ?8 @% Q SetupDiDestroyDeviceInfoList(info);- s1 H u) ^# ~$ @2 j" I ) L& X+ K. P4 z return pDevice;, V+ R' G/ n, k' F- V, y }+ D' w/ a3 m) }6 F6 f; r 再次感谢关注这个问题的人们。

    3 L# g1 w+ _( @% E8 I 8 m0 z/ K6 b1 }3 m # ]4 z/ a! K2 J4 N5 [ ^7 [ 回复人: constantine(飘遥的安吉儿) ( ) 信誉:101 2003-12-16 21:23:57 得分:0 . l6 R8 M0 J% q# ` : s0 _$ C/ \1 ]% w" i. x 8 F1 x4 w! n8 h2 `/ u 5 @& c5 r/ b8 n( o0 a3 F7 a; T( i study

    7 X- M; F" k# T' D Y : ^8 C$ c$ u0 Z9 N Top & R2 h& }/ E1 }3 N. h % E2 S" f3 \2 c) v& I 回复人: wenyongjie(一个想成为大鸟的小菜鸟) ( ) 信誉:95 2003-12-16 22:28:46 得分:0 2 f$ T; ~) T- Q0 f; u' ^6 g7 M* [ 8 U. J6 \# f7 R6 v0 G " Y, E, x) U# {1 `# Y( R4 v W% F 6 `/ Q2 ^- R5 w b& ^- Z 只有学习的份

    : l0 I' f5 Y* n" s& i * @& y; z3 D. k, f' V9 O5 } Top 9 R9 Q+ U8 S3 R* X8 v n/ T 7 U8 c% Z" @! j% A9 V5 w8 P# U+ ^ 回复人: HUANG_JH(保卫钓鱼岛) ( ) 信誉:115 2003-12-17 9:50:41 得分:10 " G- i; z( S& l- Y; F ' h: m" e7 H1 T& ]0 R ~ % A6 Y2 \, i- U: _ ) D. }& ~6 x2 ^: A& f不知道有没有用!

    /////////////////////////////////////////////////////////////// " a" O: C h a6 `3 |* [; ~// HW9911 evaluation board software Rev. 1.0 " o6 q7 |" Y0 R& s0 ]/ X2 @8 }// program by Liu Ding, Bei Jing HEAD Elec. W1 i$ r3 M% d9 g0 ^+ C) Z" L // this is the main program for the HW9911 USB device evaluation board / K& D* O5 V$ j1 C4 Q// it illustrate the basical read/write process of HW9911 1 o3 B9 ?' U: V' q e: f$ T) m// by three examples:1 ]" L: W* `0 L' Z8 I5 }) Y // 1. write datas to ram on the evaluation board7 l5 z# F8 {3 }. @: V! a) M // 2. read the datas from the ram on the board& i7 w, y; E$ m4 O. y // 3. send datas through RS-232 serial prot on the board; F; B( j$ F$ v7 h* ? // ; T7 j# \ _. z; |// the whole project are build with MSVC 6.0 ; z! m i2 U, u I# I// and tested on windows 98 platform.4 M) T g+ l; O9 c# M% ? // # S% `# ?" O6 M" j$ i- \// notes: you can use hyper terminal to reaceive datas form RS232 port0 S* s( }) E9 a // - I U2 [* M( d0 Y// this software are designed by Liu Ding B- h( m0 h- X( x// if you meet any problems, pls contact by email: & o* }& j% N! e/ U7 Q// hugehard@263.net 5 e' m0 J9 ~) {// or contact HEAD Co. by Tel 86-10-873124978 e- J! n3 X- i // or by fax: 86-10-87312495+ A: f, @5 F4 M ///////////////////////////////////////////////////////////////

    #include "hwdll.h" [8 o6 Y7 g0 |& l #include "stdafx.h" 5 r9 T! i7 @1 _#include <stdio.h># \: @' Q3 m$ }! N/ j #include <windows.h>( z: i' C! A! w6 b; X #include <memory.h>: \9 X4 V8 m" F #include <DEVIOCTL.H>0 C; Y( J& Z9 f( U% e1 { #include <stdlib.h>: `* |" [& V3 K #include <conio.h> # i. N3 C- Z& z) ?: g, \& u7 p' Z#include "hw9911.h"7 s7 c j! x& r# s j #include "test9911.h"

    : N' \0 x4 n5 r0 ] int main()! H! B5 Q/ q( E- u' L {3 S4 J4 r+ q- O+ Z& u ?* @ int hOpen=FALSE;' e/ h n" s) N8 b int hCommandLength=32; # {+ E' ]4 _, Z1 Y# i9 J int hDataLength=64;" O7 I9 `7 t3 h0 K1 f, U9 Z" ?5 C int i,VertAddr=0,HorAddr=0; ) b2 `2 H, K) c( A0 Z/ T int addr,TotalLen; 0 e* E, S2 k# {3 i% V/ B USC StAddrH=0,StAddrL=0;. N" U3 x# M. _7 b! [ USC DataLenH,DataLenL; ; K. t' ~& T/ M) G USC *hDataBuffer,*hCommandBuffer;( w- w" {* a% b3 f. | x USC ch1=0x61;9 z) ~5 h% ^! E& N8 l HANDLE hDeviceHandle;# W( B6 F: t1 B: Y; V1 m. I- c0 z 0 n% Z4 D% }3 h* _$ G$ G( B" v printf("************************************************\n");4 L5 x( [' P/ r+ D printf("*******HW9911 USB DEVELOPMENT BOARD*************\n"); ( B& _; N: z/ n3 @& G6 W0 ~- D printf("************************************************\n\n");( V& S+ G" T7 _4 ]- u- F printf("now press any key to open board\n");8 D2 n( }% T) w- h( F) D: N/ |" } getch();

    /********* call hDeviceOpen in hwdll.dll to open the board***/1 u9 T2 T0 a. K9 ^ //hOpenDevice 说明: 0 o1 Q% {: O- |3 [// BOOL hOpenDevice(HANDLE *DeviceHandle)$ B1 g+ U/ l' {- _; o) L @& N // 作用:打开设备& O8 c: Q$ b1 @6 M# a: @ // 参数说明: % R* N) O5 l( d; e// DeviceHandle:设备句柄 6 }1 v8 X$ S7 E5 }3 b: K5 U7 M// 返回值: 2 X* @! T7 A2 {// 设备打开成功返回 TRUE,失败则返回FALSE/ `8 S* b! z! r, a if( (hOpen = hOpenDevice( &hDeviceHandle ))==FALSE) $ b% f3 ~4 p: @8 x' L7 L6 q3 V {! l' |# }" e3 T0 a printf("can't open device\n"); 7 a" b j, A+ @1 |( J6 E printf("press any key to exit\n");, C; G: D6 k6 i+ M& S getch();5 g. e- |" E( q5 e return 0;- x. h% e3 n& K# H! L2 P5 I } 6 _3 y' B; E- \6 X% k else : j) l( [+ |: ?8 X printf("\nCongratulations! device opened!\n\n");

    /****** build and send command **********/7 [6 `# J; c9 l4 J printf("how many bytes do you want to access?"); . q: u2 X1 Y% ~6 @ scanf("%x",&TotalLen); % i- Q( _+ {! p: G# k/ r while(TotalLen > 0x7fff)# w; I2 ?9 u q6 E { . J8 F8 ]& G8 O printf("pls input a hex data less than 08000\n");3 P. {, N: d1 R- t4 v; j9 I scanf("%x",&TotalLen);2 K4 Y7 J' ?& L" p9 v# m! |2 {" ` } ) j$ }( M& q$ Q5 g! g% n DataLenH=(USC)(TotalLen/0x100); //data length high bytes% f g% n* G# X$ g% G DataLenL=(USC)(TotalLen%0x100); //data length low bytes

    printf("************************************************\n");0 l: ?/ l+ ^ G" \- ~! E0 R0 T9 f printf("now program will write datas to ram on board\n");, F2 o9 J3 d6 B# f: M printf("total bytes of datas is %x\n",TotalLen); + Y1 o: Z- j: o1 f; A2 W+ w printf("press any key to continue\n\n"); ; l# E. D% M, F getch(); * r- j' Q" E& M/***************************************************************** / } ?9 [% ^0 k* z. T now will build a write command packet 3 T1 |% x, i6 F# m$ b2 i- x with the first byte is 'w'.* ~& W$ I4 S7 y7 X and the following bytes are:2 t! ?9 y/ P$ E- y+ e8 N; C start ram address byte high, start ram address byte low, ' q) n7 ]0 ^- ~& f1 d datalength byte high, data length byte low. 5 O% T6 B0 ^0 `& r( Y7 E this packet will send to device through WritePipe1, 6 T& I# f+ o* x& k/ g; \7 f8 A which is endpoint 2 of HW9911. 1 s+ h: A3 f- T' Z! w& c3 ] when the device receive this command packet,8 n5 l( `5 x5 ^) u it will write TotalLen bytes data to Ram on the board 0 ?- K, m/ \$ u******************************************************************/

    $ G0 W: v2 V" X) a5 f hCommandBuffer=(USC *)malloc(hCommandLength);. ~, I% c; s$ \' Q hDataBuffer=(USC *)malloc(hDataLength); " C f0 w+ g8 R* Z9 |7 L hCommandBuffer[0] = 'w'; //read command* i" Y4 p! G* C% z0 c, e8 n. X hCommandBuffer[1] = StAddrH; 3 M9 g- K' @2 U% v hCommandBuffer[2] = StAddrL; * w- d3 I/ M4 Y3 h# P- B hCommandBuffer[3] = DataLenH;% w, ^1 c1 z" n/ p! v+ H hCommandBuffer[4] = DataLenL;

    /* call hUSBIO() in hwdll.dll to send command packet to device*/ 4 B. {0 Z2 {, K; D- }// hUSBIO 说明: 1 L" {+ s5 r! O$ Z% C// BOOL hOpenDevice(HANDLE *DeviceHandle, . C( v( c1 c3 ?2 `// unsigned char *IOBuffer, . d& |/ |+ U8 a! D: ?+ k ^6 t// int BufferLength, $ ?9 ~ T9 B4 H) x// int PipeNumber,6 }2 x2 r4 `* N! V5 c6 l! k* X // int Action) & H) a/ @7 [0 V" E8 G# y) {// 作用:设备读写' j+ k0 _# a. d% j$ x+ o // 参数说明:: t8 U8 p# Z5 [7 O% z" k // DeviceHandle:设备句柄( Y: \! T4 T! m5 B // IOBuffer: 指向要传送的数据指针2 Z! ~" Q: O+ }; W // BufferLength: 数据包长度 7 _+ t; [7 B& Q9 i( ?// 对于发送缓存1、2和接收缓存1、2,BufferLength必须小于或等于321 ?. |5 K2 P, L- m2 a0 P // 对于发送缓存3和接收缓存3,BufferLength必须小于或等于64 : r4 G! G% |. a% D8 h// PipeNumber: 通道号 % n8 y& k- B: X% e, F9 ]2 V// 发送缓存1:PipeNumber=0;' Q, p6 y1 u) Q0 B( G9 ^+ I // 接收缓存1:PipeNumber=1;' r8 G6 Y9 D8 T // 发送缓存3:PipeNumber=2; 4 [ _0 c! Y. B0 ]$ }// 接收缓存3:PipeNumber=3;# a% @6 Z9 @, v6 b9 e. K x // Action: 读写标志。TRUE代表从设备读数据到主机 4 j8 q1 X. z# c* r// FALSE代表从主机发送数据到设备 % Q/ D$ L5 p: L9 _8 w! W" F// 操作接收缓存,Action必须为FALSE X4 D6 x- T* P# ]- C B3 Y// 操作发送缓存,Action必须为TRUE 2 O5 d# w7 A9 o1 p3 W2 i- N, b// 返回值: ) H1 {1 _9 U3 \* ]$ f) z// 操作成功返回TRUE,失败返回FALSE

    if ( hUSBIO( &hDeviceHandle,9 h1 X. `; H& K- _ hCommandBuffer,: i/ a, I3 T2 X0 Q8 \5 B; w$ _ hCommandLength,% s9 F! C! Q& m, d. M- H$ y, u0 e% Y hWritePipe1,! q; L8 @0 Q$ _+ G0 E$ @9 B FALSE) == TRUE)* {# a4 N6 W! {) g/ ?# g! H: | { - k. L0 l2 W9 m$ z9 Y printf("command 'w' writed to board\n"); ; M( v# [) [- o4 b* A printf("now press any key to write datas to ram\n"); 8 W/ a; z0 A) h Y6 s0 G* k$ o getch(); : k; i" |) ?% g# O3 \ }5 B5 H. N* F" W else* h9 T1 P- o/ o2 n/ ?/ S! H printf("data can't write to device\n");

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

    printf(" "); * a0 j' H* r& S" P3 o for(VertAddr=0;VertAddr<=0xf;VertAddr++)* L& x# r, \. _6 H% r; B3 Z7 I printf("%02x ",VertAddr); " S9 N! [* f. W printf("\n"); F& k+ r z( F/ L3 \6 |5 z addr=0;' T" G3 e; d5 B9 Q% Q/ S# @ while (addr<TotalLen) ; t$ o( h' @7 k4 ^0 t2 S { / q3 s' }0 T" `! y$ g if (addr+hDataLength > TotalLen) : W: v. x) I+ m' S% a, D hDataLength = TotalLen-addr;* g+ ^4 _; w0 m& E: ] for(i=0;i<hDataLength;i++)$ F, i, b# t( a) B1 u7 o* `' M { ) A8 |( g5 I# V5 U4 H hDataBuffer=ch1++;8 @8 Q% R" _/ N1 y& g @0 F if (ch1 > 0x80) " Y9 C- q2 M% s. N ch1 = 0x61;. i" M5 T1 K% p) t- E } 4 s, v4 y3 p/ r, {2 g) m1 T* v6 S/* call hUSBIO to write datas to write pipe3, which g3 ` |/ z8 R% J' f7 _ is endoint 6 of HW9911*/

    if ( hUSBIO( &hDeviceHandle,9 a1 F, V- i8 V. e hDataBuffer,7 _5 v7 Q/ q/ w" I* g, Q/ @. } hDataLength,: [# q+ \5 G% f p2 T% M/ i hWritePipe3, 6 g; s& G: d0 L( T( I# j3 h$ n FALSE) == TRUE) //FALSE means Write operate" B$ ~4 D$ n0 X; f3 t {" G: J1 {/ ^4 {0 k for(i=0;i<hDataLength;i++)& a1 Y$ g! ~6 h$ [ {8 S6 K$ y$ V, I /* print format control */ ) }4 O$ @5 F' l3 \+ k5 z) H# g& g if(i % 16 == 0) 6 g+ f4 ]0 \$ }! O {8 W& k. ^( \, C* v printf("\n%04x ",HorAddr);5 U/ B/ |) v% |8 q( @0 ~2 S7 x1 ] HorAddr=HorAddr+16;/ h: U3 o. m; T& K* U' T } L2 E3 B0 _( V" t4 O$ T# P, O printf("%02x ",(USC)hDataBuffer); 6 n8 A1 I1 H. m+ }4 u- z5 b3 [) k" w } 8 W% I7 v; V% q8 ]. K+ S. Z+ ^ addr=addr+hDataLength; # o- F9 H- A8 \: } } 5 F" n6 t. G" } else2 b! m6 z+ k. e1 A { % Q0 H0 R" M2 Z o5 H, J printf("can't write to board\n"); 2 }+ l) s' B7 Y' r exit(0); 0 l, L( ?/ V! {& _ }/ L8 M7 i: N. [ }+ U$ w0 ]9 A" {! y1 r printf("\n\nTotal%x bytes write to ram OK\n\n",TotalLen);

    s K8 m6 ] N, X 1 ?& C6 z/ r2 J) x rTop ' E' b# T2 S: j7 V1 M- L. @ ) A0 K: @) i6 K2 s+ P9 j, P. J5 V' S 回复人: HUANG_JH(保卫钓鱼岛) ( ) 信誉:115 2003-12-17 9:50:51 得分:0 & }, g: J/ J% B7 \$ f( e $ B0 J1 N+ _- A" q( b$ Y & x4 X8 V( D; q8 N" p3 z1 R

    /***************************************************************** 1 b r- H8 N2 s$ A9 j now will build a read command packet ! U! U. }( X$ A with the first byte is 'R'. # f, b- R1 e( A and the following bytes are: 7 Y/ H1 D" D/ w$ Z! o5 |+ t' T start ram address byte high, start ram address byte low, & X9 A6 k6 p" q- y datalength byte high, data length byte low.' i9 t" T* [3 Y3 o" c6 B- O, f this packet will send to device through WritePipe1, ' l$ ^/ H5 S# y8 I which is endpoint 2 of HW9911. # I) v7 X! e0 r2 o# C when the device receive this command packet,* t K7 a3 c, g it will read TotalLen bytes data from Ram on the board / u. |: A( `% V7 W9 s& k: I******************************************************************/

    printf("************************************************\n"); 6 R9 Q1 @* s0 ?; g1 O printf("now program will read datas from ram on board\n"); 9 K# K. Q2 g& Z$ l printf("total bytes of datas is %x\n",TotalLen);+ i1 ]7 B) q9 J, T/ Y) t. o printf("press any key to continue\n\n");. G: l3 W" C- |1 T% L, Y" V, Q getch();! ^8 G& ]) F1 m* s5 b) b" R hDataLength=64; T% ?, ~# Y. j0 } hCommandBuffer[0] = 'r'; //read command ) @, [( a6 I" ?7 ?8 w hCommandBuffer[1] = StAddrH; $ p/ a b6 `5 I1 l! p c4 D( ^' E/ I hCommandBuffer[2] = StAddrL; ' a7 y! |8 [' d! S" z8 d hCommandBuffer[3] = DataLenH;& ?. E6 E/ V0 t) E6 ^! _5 F& q% z hCommandBuffer[4] = DataLenL; ; \& d) c# C- j/ i3 z* i' k. ?/* call hUSBIO to send packet */. n$ h* B. E1 _: A0 b if ( hUSBIO( &hDeviceHandle,% T; }: z- F T: M hCommandBuffer,; J! l# g% v5 P% g hCommandLength, ) s1 I5 n( R$ q1 O1 A" s hWritePipe1,6 o- U O( w# e$ Y9 _$ r( \ FALSE) == TRUE)8 e9 |4 @" f" v {# |: \8 X# }5 H. n5 Y printf("command 'r' writed to board\n");& N3 Y8 M' b- O+ \; H printf("now press any key to read datas from ram\n\n"); ; t; N& E6 F5 U2 z w; J* r# ]2 W+ Y getch();: f" I4 F4 n7 a3 a, F }! {6 S6 e$ f2 a0 N8 N else; j" ]7 u$ s: W2 ? printf("data can't write to device\n");

    /******** read ram data form board **********/ 9 ]( l: l; ]/ ] printf(" ");" {- ^, y/ a2 P2 C! S) { for(VertAddr=0;VertAddr<=0xf;VertAddr++)& d) a+ a: {1 q) x- f printf("%02x ",VertAddr); 1 g6 q7 Z8 _. C$ m d- ]0 D printf("\n"); 6 n1 ]: C7 g) Y3 A addr=0; " L' n( W8 I- f HorAddr=0; 6 ^7 L2 [5 S* [ while (addr<TotalLen)- R/ v5 @) Z$ f {8 O/ s. s/ p# N1 V8 F! H& }' a if (addr+hDataLength > TotalLen)) _& n& K( n& k# {( P% h# ]5 e hDataLength = TotalLen-addr;( Q8 h) H- f' ^; W6 R N$ Y /* call hUSBIO to read datas from board */7 A) ~- U/ I3 @6 k* u( w if ( hUSBIO( &hDeviceHandle, ! d3 {& T1 b5 N hDataBuffer,0 C6 ?3 V( O3 N2 ~* p/ |5 [% F hDataLength,3 G. [5 q" U v1 E! M hReadPipe3, 4 H- T' T3 ], }: M6 L TRUE) == TRUE) //TRUE means Read Operate( x# M% [4 l% e3 u0 q# W# r+ r# i# _ {! i! K# ?7 N5 J* J0 [: J, E for(i=0;i<hDataLength;i++) : J( N; K5 G1 p+ \ {$ E+ {1 b0 m( H Q' j /* print format control */# H( L" m E* d$ j/ b# }$ j: ]- g9 G if(i % 16 == 0) 2 P' |: T& s* D7 S; N {8 x% l! V# i% p. q& ` printf("\n%04x ",HorAddr);# ^6 Q" D/ n4 O/ [2 M; x. c2 I HorAddr=HorAddr+16;% Z$ E; X% I/ @* G& l- a0 h2 q, L }: j) u+ `; o7 u; i3 Q" j printf("%02x ",(USC)hDataBuffer); l4 F/ A- U+ C# |. \ }, {! ~4 J# I B3 c addr=addr+hDataLength; # x; @" O! H/ g3 Z, ^; L } 9 d/ `) \, a. g, T6 ]9 ] else ) M D" \. V6 ] p! {1 N { 4 D0 \# j9 Z n5 s% V3 d printf("can't read from board\n"); : ~4 [4 K0 Q) X: X2 { exit(0); 6 t0 Q2 v) j K J% X* l" Y2 n( R }4 q# |7 Y/ S R" W } ) K* G5 h$ A, Y8 s5 W printf("\n\n");1 X4 U9 J* ~; ~9 n. w' d- Z printf("%x bytes read from ram OK\n\n",TotalLen);

    /*****************************************************/ # U- k3 l' K! D2 t7 b9 K/* process rs232 test */ 6 @- W1 Z: X* k4 ?: q; M9 f; A& V/* the first byte in this packet is command 's' */ + ]7 F, D. j9 e8 r4 |/ m; P/* and the following 2 bytes are used to set */ ! A0 G1 Y/ E; n1 L1 D! e/* the baud rate of 8051 */0 i8 [/ o# B' S+ R7 S% T5 t& Q /* they will be write to TH1 and TL1 respectively*/ 7 h+ L @, r$ I& N9 a/* the following bytes are datas will be */ * ~. `: @+ H( M8 }/* send through RS232 serial poart */( X2 ?; _$ g K7 R) c! r: F /*****************************************************/7 O5 u; |6 ?' A0 `" y8 O printf("\npress any key to process RS232 Test\n"); # ]" v0 N6 |8 S/ g! a+ b getch(); {% M+ ?' K/ Q L+ L/ ~5 c" G % n8 D: e1 p9 ^4 Y- r5 c: [ USC TH1,TL1;7 \ X/ @" G7 ^( \ char hStr[30]; - Y1 Q, y) ?( z- K! d8 s7 N& W6 V$ C TH1=(USC)(BD9600/0x100);2 `6 a) {0 m F1 t- S TL1=(USC)(BD9600%0x100);% V- m3 [% \# i. Y: P3 }/ T hCommandBuffer[0] = 's'; //read command ! }# k7 \- I$ f6 F$ F! J hCommandBuffer[1] = TH1; : I W' ~$ L& A) g hCommandBuffer[2] = TL1; //start address is 0x0000

    strcpy(hStr, "Hi, dear HW9911 consumers! ");1 M6 ^! \( F# T3 P# c' h" ^/ o. U printf("Hi, dear HW9911 consumers! ");' `8 D" _' o4 X1 f memcpy(&(hCommandBuffer[3]),hStr,27);

    if ( hUSBIO( &hDeviceHandle, 0 e7 s0 a! J0 S" l8 _ hCommandBuffer, - k7 b) |# J, c$ M 30,. n1 ^0 ~6 o# ] [) l8 N3 L& H hWritePipe1,* B* i/ L% \7 S/ j3 O( P8 S3 ?* F, | FALSE) == FALSE) 3 Z+ E7 ]+ {* m# t4 q; H {3 J6 s) n$ L( w1 R9 I# j printf("can't write datas to RS232\n");8 J! O$ P, s& y6 o exit(0); ) Y6 x& z, m/ x2 O6 V, f. U }

    strcpy(hStr, "I'm HW9911 Evaluation Board, ");- I2 r7 [5 q8 x printf("I'm HW9911 Evaluation Board, "); ! @ V2 C Q( ?, }. g, r; n8 L memcpy(&(hCommandBuffer[3]),hStr,29);6 _8 m( T7 |4 q1 I1 d, X0 c9 ] , R% y+ t4 p/ N" b if ( hUSBIO( &hDeviceHandle, " F0 P' X6 F. K% P" Y hCommandBuffer,$ v4 K7 A' T) f% O# R. m/ d9 L' j 32,( r: M8 B# H& N% Y: n7 S hWritePipe1, 4 ]( G# l# c9 W9 F4 C& y& W FALSE) == FALSE) ( T+ E% c, g# {1 t* T9 u: C { 5 d- J% \$ F+ n# @* c1 P printf("can't write datas to RS232\n");1 n+ ]! D5 K! L1 b) E) x: U" v exit(0);4 M7 u6 p; x4 m* v$ F }

    strcpy(hStr, "thanks for purchasing me, "); $ f7 }8 _% v0 k4 C. _+ h4 c! P/ G9 ? printf("thanks for purchasing me, "); 9 _ W4 o1 w( v- R memcpy(&(hCommandBuffer[3]),hStr,26); ) Y% P& {) N3 y$ T& g& r# q & h: @/ n/ f- o& x! G1 W6 W if ( hUSBIO( &hDeviceHandle, ! U# ^0 K, z8 \% [1 R hCommandBuffer, $ ?6 d; N4 V+ \1 K' E5 o8 N7 k 29, 2 E+ x6 w0 r8 R Y0 p# W5 Q& z hWritePipe1,# @- S+ i/ [) m0 Q* s1 r2 f FALSE) == FALSE) 2 r. s+ Z4 D% @( Z' n, ^; o {3 A* c- N7 R1 `" d& I4 Y& d z% O printf("can't write datas to RS232\n");& K" S8 K& ]7 j$ R1 i exit(0);1 X3 F7 I! d* m `) b+ m) a4 s } + Q. N7 G: p0 u8 _3 |# Y* U1 s / j) E- g0 ]1 z4 c- `8 ^ strcpy(hStr, "If you meet some problems, "); j, M' ~2 r/ B, {& D printf(hStr, "If you meet some problems, "); ; ~* `$ ~! a, o0 Y memcpy(&(hCommandBuffer[3]),hStr,27); 0 e% X: g) L* s* L5 c 5 G6 X% P# D0 l+ V: D if ( hUSBIO( &hDeviceHandle,0 `' e' O. \# e+ }- k0 h" [ hCommandBuffer, ( M5 Q0 E- g* Y+ B 30, # V2 N9 F% L9 W3 k8 n& r& t hWritePipe1,, B5 |- P& D0 k$ L1 W/ V4 I% ^' z FALSE) == FALSE) : V$ `# s/ u# c- E _; E { + h. Y6 T \+ _ Z& l/ w printf("can't write datas to RS232\n");( o$ }# a% |: u- f( s; J) R exit(0); & {) K/ D: a3 } }

    strcpy(hStr, "pls contact my designer "); 8 U7 I3 @4 G* ?4 N$ [ printf("pls contact my designer ");( Z# @1 i' P& v1 D* A memcpy(&(hCommandBuffer[3]),hStr,24); / m6 i- Z, P# u& d$ L! u& J ( W* k) f( A9 s8 @ \! ` if ( hUSBIO( &hDeviceHandle, z, u% o1 d y" s' h" D: M7 v6 h hCommandBuffer, . U4 I! _. @/ y4 p% l% z 27,/ p5 r1 D& g7 S, J3 ] hWritePipe1,# x% ^! j, v) D: T. q FALSE) == FALSE)9 e, i% X# M4 f/ h7 Y {8 D! v/ Q7 y: e, U: C2 m" D+ t printf("can't write datas to RS232\n");1 Y: T/ ]" j3 D8 S0 M exit(0); : U. R9 p0 @2 ]# e }

    strcpy(hStr, "by email: hugehard@263.net.");* m! f9 L; p9 ` \ printf("by email: hugehard@263.net.\n"); % v; e$ Y, y4 v; m memcpy(&(hCommandBuffer[3]),hStr,27); ) C5 f4 B( _% { 7 G3 M a: _2 B if ( hUSBIO( &hDeviceHandle,6 `7 I- d C4 \# l6 K. E- C hCommandBuffer,! i& M# i, v) C h9 f 30, / C# ^9 K4 N6 ]/ o1 A' \ hWritePipe1, # x! X p% U3 \, l FALSE) == FALSE), ~4 Z5 f, c0 B0 K# Q& ~ { $ T3 E7 ?2 @" J. \ printf("can't write datas to RS232\n"); E& O0 I5 T s( y6 x exit(0); 2 o6 v$ V9 w1 C/ D } " ^! ~% P x( t! F/********* call hDeviceOpen in hwdll.dll to open the board***/. l/ ^/ s- l* s3 h, z$ z7 t! q* N" h // hCloseDevice 说明: % L8 E1 k+ n7 N0 B. G// BOOL hCloseDevice(HANDLE *DeviceHandle) ! S5 y/ F( j$ S# j k9 [; y3 q// 作用:关闭设备 - n2 c+ b' |* r% w, P( D! n: ^9 d// 参数说明:, u2 y- Y- Z' H6 b // DeviceHandle:设备句柄 % T T! b5 r8 h// 返回值: + g" A* k H1 A& @- c1 E2 E. l// 设备关闭成功返回 TRUE,失败则返回FALSE- w1 N/ n- v1 N" y$ ]" d9 U: b. N if( (hOpen = hCloseDevice( &hDeviceHandle ))==FALSE)8 o o3 Y' U$ M! B0 I% t3 A {6 m& y' Z% w, k, l. O# Y4 I" I printf("can't open device\n");, Q: Q6 i* |+ Q" S8 d: k8 u! W: K printf("press any key to exit\n"); / z% x l6 m @6 v5 X; w getch();6 c( J: k6 I Z. I return 0; 6 I8 U/ m3 b0 V! Z } ! U+ H; j3 @3 O8 `. _7 m else 1 m6 r, A% @5 `: m printf("device closed\n");

    printf("press any key to exit the program\n"); $ |% Z! [. l! U2 p9 N free(hDataBuffer);0 H {0 @4 {0 I9 C2 p$ M5 K* Z. q free(hCommandBuffer);0 d' a' V3 d* m1 @ getch();3 k! o, g4 r0 k* O return 0;$ U& ~7 x' F2 ]$ h& j) l$ a" H }

    4 K+ Y) l0 }, k0 F2 Z$ ?! } : N/ O+ ?: Z) B) u 6 @7 C. Z% V, t& b! M- b) u Top 8 x: ~# p$ h4 m3 N- f' i: {, L & v7 W# Z& t: u 回复人: aiyu33() ( ) 信誉:100 2003-12-17 11:41:24 得分:0 $ j" T" _5 G3 l r& H) A - x% F9 u. B9 x7 a* H " S8 x3 w% r" L& Q3 H & e9 y0 g; M8 i$ gupupupupupupup

    2 J# n! N6 c) b / @6 R( I* n: D$ C/ Q+ v! v Top & K; t0 z7 T ?# Y. `2 U) h) H' \ 4 Q" Y$ b- q; y N 回复人: kingcaiyao(AKing) ( ) 信誉:110 2003-12-17 12:53:39 得分:0 : T0 r0 r# w8 s) M / p" l- ?, a3 Z) F1 q5 p5 a 1 {0 ~0 R& A) q0 c1 K , P9 P. f1 _8 H% J4 m 你开发的这种软件类似于Palm Desktop Software,负责Pocket与PC之间通讯,我建议你最好先写一个驱动,将USB口虚拟成一个串口,然后直接对串口操作会很方便的。我现在做的程序可能和你相似是一个CDMA模块,通过USB口与PC机连接,然后由驱动程序将它虚拟成一个串口,我的工作就是和这个虚拟的串口通讯。

    / d( m! B) e. b; v) b, V ) b: K2 L y v( `Top 3 ^) j0 d' b+ J6 e 3 I! X; B+ h! j0 [7 h/ J" A( S1 j+ B 回复人: kingcaiyao(AKing) ( ) 信誉:110 2003-12-17 12:56:27 得分:0 ( ]1 B% W" a+ @" L& w- @+ W; S' C8 u & {$ `+ K7 [ {: E# \& Q- a: y) ^ 3 O- v2 S6 x+ s1 o) q$ W+ y 2 G( u# s3 D0 N5 x2 `: x- S# J" ?4 ]+ ?Pocket与PC连接肯定有驱动的,如果驱动程序没有将Pocket虚拟成一个串口,你也可以直接通过设备GUID和设备序列号进行访问,详情你参见我专栏上的一篇文章。当然了,通过虚拟串口来访问设备肯定要方便,简单些。

    8 g! v! r* T. l i 8 ?& g& q2 i' C9 O* NTop 2 a! A/ t6 A, a; D) p5 F' s8 u 5 c d2 v# W1 E T 回复人: aiyu33() ( ) 信誉:100 2003-12-17 13:31:08 得分:0 ; P$ @9 K9 Z, r6 A T0 ^' _ $ K/ v8 e' S6 L; o! H* K( m + X% l; h4 d8 t) H0 o & W, |* |2 u" C 我得这款pocketpc默认只支持使用usb与pc相连的,而且activesync3.7就是使用usb传输数据的。如果我自己写驱动的话,不仅不熟悉而且很可能activesync3.7这个软件就使用不了。我只需要利用它的驱动。你的专栏上的那篇文章我也看了,我就是模仿你的写的代码,但就是到createfile这步就不行了,我的同事是用palm开发类似的程序,也是到这步就行不通了,是不是有其他的原因?. S: {$ U/ A3 y. \ 我还想问问如果驱动程序将pocket虚拟成串口,如何查看它的符号名呢?

    ' O9 T2 V6 q+ X1 ^5 `- r ( ~& ]4 g8 N, C 4 m5 _/ _; X! n8 m7 t* V* JTop 3 N2 I, d/ X: @2 M T! C! N$ U( u* f( T: q8 W# i+ L6 J 回复人: kingcaiyao(AKing) ( ) 信誉:110 2003-12-17 16:53:17 得分:0 3 `: c( a3 M" p 2 P* S4 j1 {, Q7 k 4 ^- R; c7 G# H; v: N + q4 A, T( D! j6 b; ~, [+ h 假如将一个USB设备虚拟成串口的话,那么它的符号名可能是COM3,COM4,或COMn,这根据你当前PC机的配置而定 。它的符号名位于注册表中HKEY_LOCAL_MACHINE\CurrentControlSet中,你可以搜索注册表,另外在2000或以上的操作系统中,你可以到HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SerialComm中看到。

    : u$ G+ n: N( J* j( y3 N # ~' q* b& D" f" ^! G1 N( C; ] Top * A/ U, q; w$ Y# }" v " X" t* F f* B# Q; Q 回复人: kingcaiyao(AKing) ( ) 信誉:110 2003-12-17 16:55:33 得分:0 $ W+ S" i U3 D2 l% H # u4 A- X- T" a) |. y) R * n: H6 b" p; s - m" p8 g; h& \$ p/ k% y' V我以前在一张贴子中详细回答了如何利用设备序列号和设备GUID来访问该设备,你可以搜索一下CSDN。你所说的CreateFile不能打通设备,你要查一下,你的符号名是否正确,包括设备序列号和设备GUID是否正确,设备GUID你可以从驱动程序的安装向导文件.inf中找到,设备序列号则需要你到注册表中去找。

    ' ]( e; x+ @0 ^ k) R' C: [/ T 4 n3 _8 n' r$ f, s( X% mTop 5 Z9 y( Y" c% `( y, e, R& I1 G0 p6 W " E% e" U) h5 v6 y4 f- g# E 回复人: gyj_china(透明) ( ) 信誉:98 2003-12-17 18:15:30 得分:90 . S! V( ?# S: m5 u9 V: ~, j 6 f4 b2 g j3 u" y/ O: H / k4 z) B4 `$ m6 P " z6 P0 p8 q; V( w2 {4 F' K 没有星星不敢发言:(

    ' G7 S5 ^% a M1 M# G- m # i& T. [1 e* Q$ f Top 7 |( _4 F7 z, h8 E0 F * V( l \0 V' [. n( ? 回复人: aiyu33() ( ) 信誉:100 2003-12-19 18:27:28 得分:0 & }; D; C' }! [; R, S. l 7 \) p0 `7 p4 X: L ! ~! H. T* c, m# W9 z ' G; X3 t( C$ N; w 不好意思,是因为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-12 10:48 , Processed in 0.530296 second(s), 100 queries .

    回顶部