QQ登录

只需要一步,快速开始

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

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

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

10

主题

1

听众

98

积分

升级  97.89%

该用户从未签到

新人进步奖

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

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

) `8 @6 m8 N4 ?0 g

我暈,看來這回死定了

) c# v/ [1 J& T& W

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

5 }* r! B/ ?: b# J2 e2 @2 U; Q5 O

老大救命哦

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

10

主题

1

听众

98

积分

升级  97.89%

该用户从未签到

新人进步奖

回复

使用道具 举报

ilikenba 实名认证       

2634

主题

47

听众

1万

积分

  • TA的每日心情
    奋斗
    2024-4-25 06:32
  • 签到天数: 1013 天

    [LV.10]以坛为家III

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

    群组万里江山

    群组sas讨论小组

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

    群组C 语言讨论组

    群组Matlab讨论组

    API之打印函数:; u* c* U$ i& h4 j! g# v0 L2 M8 r6 r AbortDoc 取消一份文档的打印 6 s- _& I8 }$ i7 G5 }$ A AbortPrinter 删除与一台打印机关联在一起的缓冲文件 * _: E2 k) V) V+ f4 IAddForm 为打印机的表单列表添加一个新表单 : ^9 J+ W. }" [! z5 q" o) H5 L AddJob 用于获取一个有效的路径名,以便用它为作业创建一个后台打印文件。它也会为作业分配一个作业编号 # @8 _& x2 n# [* X4 c8 ~AddMonitor 为系统添加一个打印机监视器 6 _" z4 \# U/ [. T: NAddPort 启动“添加端口”对话框,允许用户在系统可用端口列表中加入一个新端口 ) c3 V+ k9 {/ i; t; K! C5 i5 { AddPrinter 在系统中添加一台新打印机 # Y1 q1 z! q- V% z! {, N AddPrinterConnection 连接指定的打印机 5 o) t9 Z1 C3 T7 S9 d2 @ AddPrinterDriver 为指定的系统添加一个打印驱动程序 0 i8 O4 S$ K* Y( i AddPrintProcessor 为指定的系统添加一个打印处理器 $ z+ R- V" i# ~. V, GAddPrintProvidor 为系统添加一个打印供应商 / ^. w+ r- l3 Z+ x5 o+ X AdvancedDocumentProperties 启动打印机文档设置对话框 7 C' t1 h; Q6 Z2 \% P$ FClosePrinter 关闭一个打开的打印机对象 0 a$ n# h3 k" ?; ]3 zConfigurePort 针对指定的端口,启动一个端口配置对话框 , K) q2 d4 x; P0 ?+ f) G' lConnectToPrinterDlg 启动连接打印机对话框,用它同访问网络的打印机连接 6 \. i. n7 X4 h" H) I. Y DeleteForm 从打印机可用表单列表中删除一个表单 7 }2 Q. I- y- Z- V/ wDeleteMonitor 删除指定的打印监视器 ; [2 _- k x% l& K DeletePort 启动“删除端口”对话框,允许用户从当前系统删除一个端口 . E' q R4 J1 k2 I DeletePrinter 将指定的打印机标志为从系统中删除 ) Q! g3 d; e9 jDeletePrinterConnection 删除与指定打印机的连接 # C& ^! a4 i% j# R, ?0 P6 CDeletePrinterDriver 从系统删除一个打印机驱动程序 - y. ~$ F' Y2 A/ w/ sDeletePrintProcessor 从指定系统删除一个打印处理器 6 d- j/ c( c& d3 I _8 ]$ o! ` DeletePrintProvidor 从系统中删除一个打印供应商 S* r0 A; ?+ ?4 `DeviceCapabilities 利用这个函数可获得与一个设备的能力有关的信息 4 c0 H7 J6 W! t& z& d& M- ~1 R DocumentProperties 打印机配置控制函数 # P% c, B+ p( p; i* AEndDocAPI 结束一个成功的打印作业 3 P! V. r/ W, I+ ~ EndDocPrinter 在后台打印程序的级别指定一个文档的结束 $ ~9 |7 r9 w( D& k2 L, u; d' x4 jEndPage 用这个函数完成一个页面的打印,并准备设备场景,以便打印下一个页 8 C$ u' C" f+ z( O {5 @" n- ` f EndPagePrinter 指定一个页在打印作业中的结尾 . A4 T* N0 N* aEnumForms 枚举一台打印机可用的表单 3 A1 [/ M9 P, Q5 ]& L% l; P EnumJobs 枚举打印队列中的作业 * E. C/ S- O" U# z0 I$ HEnumMonitors 枚举可用的打印监视器 4 c. i' |6 M# M( A0 [" o& r EnumPorts 枚举一个系统可用的端口 6 }! V; d/ u; \ EnumPrinterDrivers 枚举指定系统中已安装的打印机驱动程序 - a) A7 @& D/ s. @" \9 W EnumPrinters 枚举系统中安装的打印机 ' j4 J; i% x: s7 b# n/ D- CEnumPrintProcessorDatatypes 枚举由一个打印处理器支持的数据类型 # h: n8 V# p* }9 t$ FEnumPrintProcessors 枚举系统中可用的打印处理器 ; L2 d" o+ S2 R Escape 设备控制函数 0 U: g) @. x& q6 _3 d5 v7 Q3 O: F FindClosePrinterChangeNotification 关闭用FindFirstPrinterChangeNotification函数获取的一个打印机通告对象 * {. d) _( M) r* _$ a! pFindFirstPrinterChangeNotification 创建一个新的改变通告对象,以便我们注意打印机状态的各种变化 ' H+ G# p! f' b) s FindNextPrinterChangeNotification 用这个函数判断触发一次打印机改变通告信号的原因 2 T" c z6 J3 Q8 L) u FreePrinterNotifyInfo 释放由FindNextPrinterChangeNotification函数分配的一个缓冲区 9 _. {+ h8 Z5 c3 ?& W8 \( S+ |GetForm 取得与指定表单有关的信息 6 x$ A6 }# N/ ]! hGetJob 获取与指定作业有关的信息 % e+ q' G0 q4 `& A+ p/ b GetPrinter 取得与指定打印机有关的信息 1 B8 k: q2 z z GetPrinterData 为打印机设置注册表配置信息 4 l; |' a, \& t3 X7 s1 |, qGetPrinterDriver 针对指定的打印机,获取与打印机驱动程序有关的信息 / A$ l3 ^+ s! j; FGetPrinterDriverDirectory 判断指定系统中包含了打印机驱动程序的目录是什么 % u5 L- F' s ?" a" U8 u# ]GetPrintProcessorDirectory 判断指定系统中包含了打印机处理器驱动程序及文件的目录 ' u* U2 G- n% A5 p" Q0 S5 S OpenPrinter 打开指定的打印机,并获取打印机的句柄 9 V( x; e @3 ^. q2 uPrinterMessageBox 在拥有指定打印作业的系统上显示一个打印机出错消息框 $ w. H, n/ B3 ^7 ]PrinterProperties 启动打印机属性对话框,以便对打印机进行配置 {" a- _1 X: M$ b ReadPrinter 从打印机读入数据 t* }* x. d9 R: P5 @- hResetDC 重设一个设备场景 5 O! R% l, k- K4 b; c8 ?5 y% c/ Q" d! d ResetPrinter 改变指定打印机的默认数据类型及文档设置 & O/ G' t4 f/ A1 d D* i ScheduleJob 提交一个要打印的作业 # u/ M6 A# W, ?5 t& e. f t6 V7 C" ISetAbortProc 为Windows指定取消函数的地址 - W; x B2 [3 D8 c# A) ]8 |; CSetForm 为指定的表单设置信息 ' S% N% N" S) V' ]1 L$ \SetJob 对一个打印作业的状态进行控制 8 q* N5 t K c5 v/ a2 USetPrinter 对一台打印机的状态进行控制 4 k4 S/ M" T3 P# Z* I! c* J SetPrinterData 设置打印机的注册表配置信息 - ` P& E9 w7 G/ s StartDoc 开始一个打印作业 # S8 P: u5 l& z! ]. O0 t StartDocPrinter 在后台打印的级别启动一个新文档 . U7 D' H& N7 S$ jStartPage 打印一个新页前要先调用这个函数 6 U0 T. r7 k6 |0 GStartPagePrinter 在打印作业中指定一个新页的开始 0 x) _% M+ D- r WritePrinter 将发送目录中的数据写入打印机 ( s+ p- \2 K! v4 p9 i) C

    回复

    使用道具 举报

    ilikenba 实名认证       

    2634

    主题

    47

    听众

    1万

    积分

  • TA的每日心情
    奋斗
    2024-4-25 06:32
  • 签到天数: 1013 天

    [LV.10]以坛为家III

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

    群组万里江山

    群组sas讨论小组

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

    群组C 语言讨论组

    群组Matlab讨论组

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

    主  题: 关于usb通讯方面的问题。请AKing大哥及相关高手来看看,万分感激!!! ! e0 V6 V+ o. u5 q作  者: aiyu33 () # \! |! i6 d4 ~$ J9 z( |, I+ j( O* q 等  级: ; d4 D1 Y! L& n, v# H信 誉 值: 100 4 k) C0 x7 F4 G0 L% o2 K i 所属论坛: C++ Builder Windows SDK/API ) V( ^, m; S+ U8 w6 K e 问题点数: 100 & {" C* y1 b1 K5 ] ? 回复次数: 12 ) Q: ~/ q5 X* s- I3 a. R 发表时间: 2003-12-16 20:43:13 1 G! Q u- F! C/ U; F$ A. B 5 ~0 A0 g5 \4 s7 K0 o' j , k' j# O* W9 E8 ?+ F

    最今我接到了开发pc和pocket pc通过usb口通讯的任务。这两个星期我参考了很多方面的资料,特别是AKing大哥写的一些文章。但我始终没有打通这个关口,我贴出我的代码请AKing大哥看看,现在很急,多谢。 4 n' q7 q/ E7 epc的os是windows2000professional4 i" P# r" o& [/ O; Z pocket pc是hp ipaq 2210,os 是pocket pc2003。* g3 m4 c$ S: M }; G0 |& V 我装了activesync3.7。我查看过了,这个activesync目录下有pocket pc的驱动程序。pc也能识别。 ) \' u7 y$ \! p: G4 M下面是我在pc上调用usb的代码。* ~' ]: K, `& v- ]2 {7 c4 t1 e 下面的代码我能打开hidn类型的usb,但是就是不能打开pocket pc的usb。4 W- l( w) }% J1 R. ` //classGuid = {25dbce51-6c8f-4a72-8a6d-b54c2b4fc835} % Q# H1 w: D! d" f, Q& [5 QDEFINE_GUID(GUID_CLASS_PALM, ; V! B; @ D( ], R" [7 n. R( P; W 0x25dbce51, 0x6c8f, 0x4a72, 0x8a, 0x6d, 0xb5, 0x4c, 0x2b, W: @& T' Z1 V7 ^# \2 q R; Y 0x4f, 0xc8, 0x35);" e8 W# Y c6 g' O GUID HidGuid = GUID_CLASS_PALM; 9 i- M% k- M, FHANDLE Get_DeviceHandle( GUID* pGuid)* G/ A. F) n4 S+ O4 P4 h1 N9 y6 B { 7 k+ L; R0 M; d* l% r 9 H# J* J* ?: L0 _: l3 `5 g HDEVINFO info = SetupDiGetClassDevs(pGuid, NULL, NULL, DIGCF_PRESENT | DIGCF_INTERFACEDEVICE);7 X3 O3 E7 ]- Q$ p ! B1 S9 k9 y# k6 T1 @ if(info==INVALID_HANDLE_VALUE)5 ~1 v# t; U' ?7 m# u {6 X) Y' h, M. y printf("No HDEVINFO available for this GUID\n");" m+ z o2 S9 @% k8 n return NULL;; ?. x3 A' Q" ]$ z } , W5 v5 U0 q( {. e SP_INTERFACE_DEVICE_DATA ifdata; / K# w: s# r2 J3 U ifdata.cbSize = sizeof(ifdata);: L8 F5 c* o5 L5 p# i8 B# ~+ S+ A! W3 r //0000是我在注册表中找到的序号 & P4 E' P8 j- h9 F9 V8 r# x if(!SetupDiEnumDeviceInterfaces(info, NULL, pGuid, 0000, &ifdata))2 o( e* }/ X! Z9 w { # v- J7 s3 b7 n3 u- o2 L6 y printf("No SP_INTERFACE_DEVICE_DATA available for this GUID instance %d \n", instance+1); 0 J* p7 P% z' h; \3 m, m SetupDiDestroyDeviceInfoList(info);. o0 z- j9 A7 {$ a return NULL;' C; f8 n# Q# N2 J& t+ A; v: Q- [ }

    // Get size of symbolic link name: o' x H) z; G$ ] DWORD ReqLen; ( ^! b1 ~' E; t9 | & \/ J+ r \5 z5 u- C SetupDiGetDeviceInterfaceDetail(info, &ifdata, NULL, 0, &ReqLen, NULL);# s' D% G& s# S H+ \ 9 c$ Q" f; L& ~+ I$ n PSP_INTERFACE_DEVICE_DETAIL_DATA ifDetail = (PSP_INTERFACE_DEVICE_DETAIL_DATA)(new char[ReqLen]);& I, \3 ?/ O, y. h; P9 ? " a' f4 V! Q1 B; C( ] if( ifDetail==NULL)8 H' Z* X, O) X7 z {* C( s/ O; n& m/ l! E5 S SetupDiDestroyDeviceInfoList(info); 6 T% V4 G) x4 R return NULL;) X' V0 e A' S }

    // Get symbolic link name) D$ v6 X+ F* \/ }* H9 f7 ]' o; o ifDetail->cbSize = sizeof(SP_INTERFACE_DEVICE_DETAIL_DATA);" u& Z/ j+ S) [7 N6 T( k% p ) i# D7 V, I1 u if( !SetupDiGetDeviceInterfaceDetail(info, &ifdata, ifDetail, ReqLen, NULL, NULL))9 r( X1 {! y2 l { * m6 z* j6 {) U; a Y: [ SetupDiDestroyDeviceInfoList(info);' [6 ~" g/ e$ A3 ~. K% l delete ifDetail; + v0 L3 A, q0 z- [( u return NULL; l; c3 c" ~6 r, x9 \: h# t }

    printf("Symbolic link is %s\n",ifDetail->DevicePath);+ y. r0 I" j' g/ p

    /*\\?\\usb#vid_03f0&pid_1016#5&1bc41f6c&0&1#{25DBCE51-6C8F-4A72-8A6D-B54C2B4FC835}这是ifDetail->DevicePath的内容*/6 X% p. L" S( ] J // Open file ) K; |! a3 H# W' J1 v7 u8 u//前面都很正常但就是下面始终得出一个无效的句柄,我也就无法开展下一步的工作. 1 \. J g4 b- P$ h {' r HANDLE pDevice = CreateFile(& y4 S6 u! D1 H; c+ l8 X ifDetail->DevicePath, $ @8 g6 c6 v* R& a GENERIC_READ | GENERIC_WRITE, " D) y/ {6 Z( X" T8 ^' [ FILE_SHARE_READ | FILE_SHARE_WRITE, 8 z2 O0 V/ j5 z" ]; r NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); 3 M7 m( s' q: G, ^) { p6 y/ A$ m; u3 Q% ^ if( pDevice==INVALID_HANDLE_VALUE) pDevice = NULL; # c/ l$ @- [8 ?. Q- G% ` SetupDiDestroyDeviceInfoList(info);8 ^ U# F# b3 P: _ f . V6 O* l$ u. y return pDevice; 5 y0 \; W, b# h2 ?}+ M! ]& P9 P- g" Z- o. d" k 再次感谢关注这个问题的人们。

    . V5 ?- X2 s4 v: r$ d / m6 r J% M2 k8 |. X $ w4 h8 \% N; X 回复人: constantine(飘遥的安吉儿) ( ) 信誉:101 2003-12-16 21:23:57 得分:0 7 z3 [4 A$ x3 X" z 6 M& ^' U# Z# B0 | * F" z/ x+ v) _. C2 Y 8 h9 L+ V* }6 R& r study

    ' ^' k# |: s$ B K, o5 F- T ( Z ^' u' Z8 L. H; N5 o, n3 n F Top ; H" W$ W1 g+ J' F8 Y1 M 1 d& M* t( F% o; w( A 回复人: wenyongjie(一个想成为大鸟的小菜鸟) ( ) 信誉:95 2003-12-16 22:28:46 得分:0 # ^, E: Y$ r9 Y ' J/ z: E/ Q0 H4 o0 |: A4 W 4 K; v) x- ?/ w% u' T 0 w2 G) d$ n+ E: N1 a只有学习的份

    " Y& {! J) P! r {8 | : b! c! A% C6 x/ X. o2 P0 dTop + s2 y) V. S1 |$ J / Q) ?5 ~( K( i7 S% ] 回复人: HUANG_JH(保卫钓鱼岛) ( ) 信誉:115 2003-12-17 9:50:41 得分:10 5 z( S+ `4 _: X ?, [. V U 4 S: K5 ]* r( [) t; Q 3 m9 L4 V# w: i% Z; i0 i+ S2 C( B # R* I. _! _! W" s$ ] 不知道有没有用!

    /////////////////////////////////////////////////////////////// _: l+ C2 t) ]$ z' Q // HW9911 evaluation board software Rev. 1.0 : I9 G* q3 P- l, W6 Q// program by Liu Ding, Bei Jing HEAD Elec. % Y; ?' N( S* r% S/ K S// this is the main program for the HW9911 USB device evaluation board1 h, T2 n2 o( P5 O$ K6 A9 y // it illustrate the basical read/write process of HW9911& V, o1 R0 ~, K$ B& B" |+ N! f // by three examples:6 U; B5 Q, P5 ]( f // 1. write datas to ram on the evaluation board 4 L2 j0 l; d" `! \- C% a// 2. read the datas from the ram on the board . p: n7 d1 L$ v6 S// 3. send datas through RS-232 serial prot on the board 2 a& [/ ^6 X& v// & i: u, L0 ^ w4 m0 Q7 }6 u9 V// the whole project are build with MSVC 6.08 R8 n6 h0 u1 a$ [ // and tested on windows 98 platform. ! o* S4 u. D4 f- h//$ i* O+ c4 D. q/ c // notes: you can use hyper terminal to reaceive datas form RS232 port! `3 q; ?. l" M7 R /// a8 _( ^: k" y; x+ Z // this software are designed by Liu Ding. X% f- H8 K$ G // if you meet any problems, pls contact by email: 6 l8 \; ^) Q) q// hugehard@263.net ) V K' j0 V- l" H# L// or contact HEAD Co. by Tel 86-10-87312497- S' ^/ Q2 p8 E' w& _/ z // or by fax: 86-10-87312495 1 v; @, x0 C* }/ l" k6 M! o///////////////////////////////////////////////////////////////

    #include "hwdll.h" 0 v1 Z) h. i% h$ g# x* l" _ R9 g#include "stdafx.h" ) J1 K* r1 } z( P/ \, }#include <stdio.h> ; m, X) Y5 `5 d0 S$ X* Z# G$ H#include <windows.h>; _9 n/ [9 C o4 i7 F #include <memory.h>/ N6 s$ |& j0 M, M+ i9 } #include <DEVIOCTL.H>( a" J0 t; C) m3 I #include <stdlib.h> + \ ~: t, n. M( q#include <conio.h>) m. Q- `( f& a4 O D #include "hw9911.h"9 r# R$ m) k# F% z- j7 @# ^ #include "test9911.h"

    + ~! g% L: a/ A+ N1 c6 Kint main() ' @4 ?. r' ]4 B$ V{ - A& {5 A4 o1 U3 R int hOpen=FALSE; - W* J! H- ]5 p int hCommandLength=32;! h* g" X8 M5 a: r( u int hDataLength=64;! _6 ]- r( o" A$ C int i,VertAddr=0,HorAddr=0; ; j$ P1 R# `1 \0 c; `8 x int addr,TotalLen;/ u7 S& y! P* z' ?! L% i& I USC StAddrH=0,StAddrL=0;. \6 p5 b9 N7 Z3 n USC DataLenH,DataLenL; : t( l( \' E+ z9 }3 [5 M4 J USC *hDataBuffer,*hCommandBuffer;; g {9 o0 a/ `- J4 i+ c- y( P/ e USC ch1=0x61; & R0 a9 ^( p# {( h0 A HANDLE hDeviceHandle; + U7 ^! ]( N5 V8 T$ S& c+ M . C/ P! { d- P3 ]7 P7 s printf("************************************************\n"); ^3 Y0 y+ D8 R printf("*******HW9911 USB DEVELOPMENT BOARD*************\n"); 2 c0 e! h3 R0 `' X7 T# ?; U* O- a printf("************************************************\n\n"); $ N0 H+ J- W4 Y5 T printf("now press any key to open board\n"); 6 m" ^ Q8 k) A% h0 e; {4 ] getch();

    /********* call hDeviceOpen in hwdll.dll to open the board***/ * `/ r1 T! `3 C! l//hOpenDevice 说明: $ y0 Y" t1 z( Z# ^% M s2 ]+ L/ s// BOOL hOpenDevice(HANDLE *DeviceHandle) ) q4 i8 W, J) @( ~3 _; r- u// 作用:打开设备$ t _) a4 @; y // 参数说明: / M& ^ B1 }' K// DeviceHandle:设备句柄5 |& H$ Z, ^6 K- L1 v // 返回值:* G6 h$ I7 r8 O7 t" r // 设备打开成功返回 TRUE,失败则返回FALSE * i8 D" h6 F" \ K% e if( (hOpen = hOpenDevice( &hDeviceHandle ))==FALSE) 1 Z* W5 ?8 |0 B4 ~3 }2 J {( H5 F0 B8 q2 |6 `7 ? printf("can't open device\n");4 z8 H/ R) p/ f$ }2 t printf("press any key to exit\n");2 J0 R. z# u1 H+ j getch(); ! r* V/ m5 ~* P! J return 0; % {# t/ d* N Z2 | } |1 k" g c3 E, R else + b; B w, r; [5 u printf("\nCongratulations! device opened!\n\n");

    /****** build and send command **********/ & q L# F) `" [( S' E5 I0 ] printf("how many bytes do you want to access?");' l* m8 R2 F6 m& v scanf("%x",&TotalLen);4 ~. N% P/ P" [" i6 h- l while(TotalLen > 0x7fff) 4 n& j8 ?* \3 U' O0 X5 N+ Y {0 L0 v$ w! E1 W4 u2 f- O, l: X printf("pls input a hex data less than 08000\n");6 Y0 h: V) C( o+ ~ scanf("%x",&TotalLen);3 @. V& x2 t1 t2 s) w4 t8 c; A } 1 F- V& o# r1 r& m5 n) l+ ] DataLenH=(USC)(TotalLen/0x100); //data length high bytes 2 |$ p I) v% ^% @0 C ] DataLenL=(USC)(TotalLen%0x100); //data length low bytes

    printf("************************************************\n"); 7 H/ h% s7 s, {8 z+ E$ x printf("now program will write datas to ram on board\n");* N3 I# Z" l r: S; } printf("total bytes of datas is %x\n",TotalLen); 0 v# K4 I% Z, v u7 [ printf("press any key to continue\n\n");0 j* X# p! ]7 \. n% O getch(); ) m/ a* ?$ T# Y% _ K# n7 i: o/***************************************************************** % W: ]: I1 }! o, d3 }3 @ now will build a write command packet 6 q- K" [" v& b5 i with the first byte is 'w'. 1 ^' \- E0 E6 ~' e+ z and the following bytes are: , g9 V! D: q1 D0 c' F# k# `( m start ram address byte high, start ram address byte low," y2 l8 u( D9 C& P' e0 ]3 ~. H datalength byte high, data length byte low. 7 L9 I+ o3 |; ~6 b, c this packet will send to device through WritePipe1, ! L' a! ?) J- d1 b; u' k6 z which is endpoint 2 of HW9911.) C& C( u' O% \ when the device receive this command packet, 3 }. f0 k: h1 Q: X! Q4 I it will write TotalLen bytes data to Ram on the board . G3 n) `0 ^/ J& Q******************************************************************/

    & @, S* q- I1 x3 e5 R8 a hCommandBuffer=(USC *)malloc(hCommandLength); - s0 n4 U9 c% m8 W hDataBuffer=(USC *)malloc(hDataLength); ) _% h$ m3 |$ L- J, F9 ~ hCommandBuffer[0] = 'w'; //read command3 L5 }( m3 n8 X. ? hCommandBuffer[1] = StAddrH; 6 D. n8 @: r7 u, y" t hCommandBuffer[2] = StAddrL; 3 R9 o9 G6 L9 U hCommandBuffer[3] = DataLenH; , d7 O( v: p4 Q- R) L V- s) K* M+ ~/ n hCommandBuffer[4] = DataLenL;

    /* call hUSBIO() in hwdll.dll to send command packet to device*/ . }$ G' `- E3 E& n3 F- n/ g4 ?+ s// hUSBIO 说明:7 G x. ~ ?1 S r4 j' [, F // BOOL hOpenDevice(HANDLE *DeviceHandle,2 {& W. Q& ^! n/ E // unsigned char *IOBuffer, O' ^% r" E" w2 E$ }% Z // int BufferLength, + A% H% Y% @+ S8 @. w% k4 T& q// int PipeNumber,( _7 B( v' t r# }; H5 {" _ // int Action) : m- X( \; w6 a' h+ {# y// 作用:设备读写- S) W# X; O* g; t% m7 G // 参数说明: 6 z: O$ S6 j& w H( h& T d6 f// DeviceHandle:设备句柄 6 W- V8 @5 @$ N* b// IOBuffer: 指向要传送的数据指针 - Z% i) [& v( Q& i# _( v1 y// BufferLength: 数据包长度& ^5 r$ A) m7 S& a6 i // 对于发送缓存1、2和接收缓存1、2,BufferLength必须小于或等于32! A7 u4 x7 F. U6 Y // 对于发送缓存3和接收缓存3,BufferLength必须小于或等于64. K9 ]& J$ i. o# f" _" F7 v // PipeNumber: 通道号" i g5 W! F5 D7 {: O, l // 发送缓存1:PipeNumber=0;, k* Y" }* M+ [9 q! S( ]% e // 接收缓存1:PipeNumber=1;; s; E' y- r" q6 r1 x7 v // 发送缓存3:PipeNumber=2; $ f5 I! F7 V6 _2 Z/ x// 接收缓存3:PipeNumber=3; * `% B2 k$ W( B" R$ n9 n// Action: 读写标志。TRUE代表从设备读数据到主机, ~; m6 O! P: { // FALSE代表从主机发送数据到设备 7 D+ b* @. C$ \. `3 J3 T2 @0 x // 操作接收缓存,Action必须为FALSE $ K0 b8 |1 d( [' ~// 操作发送缓存,Action必须为TRUE 6 l4 x, q4 H8 Z* B |3 @( f3 `2 ]" N// 返回值:: g4 {: h: F3 L( M // 操作成功返回TRUE,失败返回FALSE

    if ( hUSBIO( &hDeviceHandle, 5 J! c: b% Z$ s+ O! h/ n4 |- D2 u hCommandBuffer,# a( j4 q# G! f/ w' F hCommandLength, + ?4 Y! U8 K8 j3 r" O hWritePipe1, 5 ~( n, f3 ] k8 K) ]( G FALSE) == TRUE)3 S4 z. f. z! | x {7 ?- x8 w. e" Y8 L; b printf("command 'w' writed to board\n"); @5 o B( J! Z% d+ h; j printf("now press any key to write datas to ram\n");) \, E6 q2 y9 w( e getch(); |# a0 C6 ~$ b$ B* Z } + a+ L( c) T0 B7 `" c& v else. \2 V @( x# {' C printf("data can't write to device\n");

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

    printf(" "); m$ p9 J4 n* s for(VertAddr=0;VertAddr<=0xf;VertAddr++) k% k+ x( y! F printf("%02x ",VertAddr);7 i* |) p$ f$ ?% o! y printf("\n"); ) ]2 v) j: @. u7 [& B addr=0;3 p) D: P# Z: L, h, H while (addr<TotalLen)4 C9 n2 }3 j3 K- R( P9 d- V { . X8 c, z, T2 Y% Z1 @$ h; z4 H if (addr+hDataLength > TotalLen) ( h* s j- ~$ e% u hDataLength = TotalLen-addr;( d6 P* _; e! u% s4 i; M for(i=0;i<hDataLength;i++)1 T5 W3 [6 W% D3 n, K- G { " L6 m" \# e* B0 G; r% O hDataBuffer=ch1++;/ O2 {3 P v* k3 D7 x8 a9 k if (ch1 > 0x80) ( F+ E: ?3 b- P# N4 c1 e3 a* r ch1 = 0x61; . u {6 I# e0 F$ i7 G0 H! E! P; _; j } # z! @; M, h# ?7 J7 S/* call hUSBIO to write datas to write pipe3, which* u7 V3 \8 l# w6 Z, \0 ~ is endoint 6 of HW9911*/

    if ( hUSBIO( &hDeviceHandle, + H% B+ l+ v5 } hDataBuffer,4 z: i9 g+ `, e1 T/ F7 V hDataLength, ?. j2 h0 Z+ R/ Q) r, U- n+ G: O hWritePipe3, 0 C) H' Y* ~; [9 v FALSE) == TRUE) //FALSE means Write operate 5 z* P. _* s5 `7 w8 O { ; N6 G* q0 x0 G* X8 t1 _% q/ ^ for(i=0;i<hDataLength;i++) h5 \ @; k* k1 [0 [. X- q { - V0 s! X8 ?+ A- C$ c( ]/* print format control */ 8 ]3 n9 U" U7 J5 q. L$ z! H if(i % 16 == 0) 6 r3 C5 p1 ` @& U5 P { * X+ a* l7 Y @* l r' u# J7 k3 A! _: d printf("\n%04x ",HorAddr);# W; }2 t* p" O7 x! x HorAddr=HorAddr+16;8 Q) @& E9 O# K G }& C# K% Q6 o6 s! h& I, ?2 _ printf("%02x ",(USC)hDataBuffer); 5 E/ v' B! r _* C7 [' t" c } # `, U+ }- o" b0 @ addr=addr+hDataLength;( r) O* s1 e" s: G- f1 ? }, x" f% u, x+ n' Z4 m& v4 a else4 |7 G( o2 I' m/ c3 W) ?# H* k { 3 Q* }1 G3 Z! @: A+ W2 x, a2 h' q! V printf("can't write to board\n");5 L- _7 g- B' V' V# b- x0 v* ?* j0 F exit(0);6 c- _* U3 J+ Y7 B2 P# @$ @: z* x }' d: {2 s- k, U+ C% ~ `8 O }5 S( P; z' j) U8 [+ ?& c. C printf("\n\nTotal%x bytes write to ram OK\n\n",TotalLen);

    ) F' H7 X s( B$ ~6 Z 7 e- w4 M+ \! C* j' }, l! ITop ' g' m; e) x3 J9 B) S# }& K% P 9 k- \) o! t$ e7 N6 O; k2 T% y, a$ ] 回复人: HUANG_JH(保卫钓鱼岛) ( ) 信誉:115 2003-12-17 9:50:51 得分:0 & W, U9 h/ \0 ]7 ~ }* {: ? # t0 m+ h% f% e 3 z4 R. M r$ s2 v

    /***************************************************************** 3 W; b; U1 a& S0 \9 t$ Y. a* ^; g now will build a read command packet ' B- O. ~) F1 _4 h' @7 g9 z' \% s with the first byte is 'R'.! \& L0 J# W/ f and the following bytes are: " K) j& T3 J6 v& K+ Y6 H1 n# A start ram address byte high, start ram address byte low, . D2 H+ a/ n' z: s datalength byte high, data length byte low.5 k& v' D" i9 S- n this packet will send to device through WritePipe1,3 }9 |/ y: }( O which is endpoint 2 of HW9911.3 f Y' M/ Z2 \! E) I! U when the device receive this command packet,/ o* N. s/ r" Q it will read TotalLen bytes data from Ram on the board ; U- W& n: I. [) w) S******************************************************************/

    printf("************************************************\n"); V+ A, L3 w) G& @ _ printf("now program will read datas from ram on board\n"); / j( B1 n( b. y% P6 c printf("total bytes of datas is %x\n",TotalLen);3 \$ r8 I; C& U7 u printf("press any key to continue\n\n"); ' i) X; c; c) j5 v7 s6 A6 Y getch();6 \5 Z I! l: ~ v0 I hDataLength=64;. z, J6 ~, d3 ^! v0 C hCommandBuffer[0] = 'r'; //read command3 m6 x6 G5 G8 T+ _5 s* w( f1 v5 J \ hCommandBuffer[1] = StAddrH; , @$ t9 Y( l2 R8 E6 K) v hCommandBuffer[2] = StAddrL; 9 L. p' P+ @6 \# C: u: m7 q# g. @: q4 ` hCommandBuffer[3] = DataLenH;: K( [- X' b9 k9 x( z0 A$ X0 Y hCommandBuffer[4] = DataLenL; O+ E' z/ Z; B/* call hUSBIO to send packet */, e( z# W c0 D5 p |8 {3 Z if ( hUSBIO( &hDeviceHandle, 2 p: }+ |$ J9 o& @& X hCommandBuffer, ! r/ W- e' s3 M' T. H2 q hCommandLength, & L( z3 ?, ~8 }; D/ y) b% V; m hWritePipe1, : G+ B; X, C- i+ ]0 \$ r" K- \ FALSE) == TRUE)2 U+ C" G% u6 a# n c {0 t" g N A* L( s: W9 I" ?' y printf("command 'r' writed to board\n");) G0 M' ~$ h# U4 S( l7 ~# X/ H ]- y printf("now press any key to read datas from ram\n\n"); 3 r. T8 E: Z+ w getch();& E" T& D, N( c! v Z5 _, ~ }! {8 @/ O$ u4 G% O' @; D else , B" J& O0 w8 D: H( n/ `/ V9 h4 y printf("data can't write to device\n");

    /******** read ram data form board **********/2 `! Q4 n: B7 \# z. l" [ printf(" "); " K0 N R' @1 T& B4 Q for(VertAddr=0;VertAddr<=0xf;VertAddr++)' h0 O' H0 r; ~& U. n( C printf("%02x ",VertAddr);# E/ A, j6 d6 Q3 h- S$ D1 a( ` printf("\n");9 X! |9 B" l- K4 {& t* e. O9 z addr=0; 0 u: v/ l: @% ~4 l ]3 ?" t HorAddr=0; % l1 ~* ~4 W$ q9 Z) S) ~ while (addr<TotalLen) ; f1 w9 v+ f0 G1 a0 o- @9 k q {" P0 v1 g+ ~ w9 H7 x if (addr+hDataLength > TotalLen); A( l1 B# O9 Z" E0 @+ l' I hDataLength = TotalLen-addr; 2 {2 Q) j5 o: P7 A/* call hUSBIO to read datas from board */ 9 }: W9 ~8 u! f2 b8 |1 F. _ if ( hUSBIO( &hDeviceHandle,, H; X$ q6 u3 ]5 p; l; M hDataBuffer, 8 {% }9 M7 d. c( B" U$ T$ }0 H1 z0 n/ k6 i hDataLength,/ c! A" [, @! f3 L9 @ hReadPipe3, / b; O4 b7 _( H8 G TRUE) == TRUE) //TRUE means Read Operate& t$ C0 S' E; E$ N I- T2 h% H; p { 3 u' d+ H# C: h for(i=0;i<hDataLength;i++) 1 R4 @4 W2 v/ T' |' U {: Y3 d8 Q) v! W$ ~4 u z* | /* print format control */! j& V' W( M" @* d- S, \ if(i % 16 == 0) + _! m( J2 e. ^( D {/ Q) d: e1 w; v printf("\n%04x ",HorAddr); 8 [+ G4 w/ [9 v8 @9 s HorAddr=HorAddr+16;$ @+ x7 O! z) @% b( m* T& f& c }' f0 _# N) o& g8 r$ ]8 d- y printf("%02x ",(USC)hDataBuffer);& \ i T0 N; F } 8 w# n+ G4 D0 t- S addr=addr+hDataLength; ! ~2 C( y) P" d6 J5 Q& D1 W }1 i% f: D# r" c. I' } else: b: X1 i9 L! `# ~) Y {: h& j0 x- e$ X0 P* g printf("can't read from board\n"); ( d1 P K( r$ d3 U; M& J. W exit(0); 1 {8 t/ \6 ?! d2 P } % Y7 N, P& T) x9 m7 S1 l6 n } $ h m4 }7 j# v) v9 `/ Z printf("\n\n"); 1 c% i. F% b# s printf("%x bytes read from ram OK\n\n",TotalLen);

    /*****************************************************/ / p' W' A0 B2 T7 v/* process rs232 test */ : i# k2 ^: N5 e4 W/ K/* the first byte in this packet is command 's' */ ) |4 g& ~# b0 ?/ i8 @* m3 X/* and the following 2 bytes are used to set */+ z) w& ]; V! {8 M( S /* the baud rate of 8051 */ 3 ~# H, u% T2 n5 c7 w/* they will be write to TH1 and TL1 respectively*/( R' C3 I% L- e1 t# }% X3 { /* the following bytes are datas will be */" G6 s/ X: d% ]5 H# F /* send through RS232 serial poart */ + ?8 I# g8 B2 `/*****************************************************/ 4 N) o, X7 a. u0 e+ c" b printf("\npress any key to process RS232 Test\n"); ' i2 b7 X6 k. R* ~% \ getch(); * {$ b I4 A3 y: z1 n 3 h7 r8 r. l# ~; k w) `" J USC TH1,TL1;9 T* q k0 Z0 m+ {, w char hStr[30]; 7 r6 C: l$ {4 p" S$ u: _ TH1=(USC)(BD9600/0x100);: ]: {) S' h% @# ? TL1=(USC)(BD9600%0x100);5 D" n- x8 g% }- r" _0 f& v hCommandBuffer[0] = 's'; //read command , Z4 {( V6 _2 y hCommandBuffer[1] = TH1; & n, x* L1 \) K2 [9 W% `1 ~) B hCommandBuffer[2] = TL1; //start address is 0x0000

    strcpy(hStr, "Hi, dear HW9911 consumers! ");. e2 g+ ^' d, M3 W8 r3 Q1 x4 t printf("Hi, dear HW9911 consumers! ");+ R; p' W. R2 U v/ u! i, x memcpy(&(hCommandBuffer[3]),hStr,27);

    if ( hUSBIO( &hDeviceHandle,% O+ @3 n* ]! P R$ F' R0 z: f hCommandBuffer, & |5 `2 w% `7 j 30, : P, k6 D/ H1 c1 n3 ?- } hWritePipe1, 4 d( `* N# k Z$ F, r FALSE) == FALSE) 3 W* u- u+ |+ g5 O/ D { 9 x, D7 D' p5 b% H1 u P$ t h printf("can't write datas to RS232\n"); ! @% k( T( n# K. v J exit(0);2 t9 }5 g: h1 C, E+ T% ] }

    strcpy(hStr, "I'm HW9911 Evaluation Board, ");& w" ~* U8 f0 Q" ` printf("I'm HW9911 Evaluation Board, ");; H. ?! f; O( @( s9 ] memcpy(&(hCommandBuffer[3]),hStr,29); 7 u% N6 ^+ e0 L" E' k - l8 I- q, a6 x: U4 `" }. S if ( hUSBIO( &hDeviceHandle, 3 c6 Q& q& E4 x) E* T4 A6 O. [) f hCommandBuffer,. B$ N1 s; v$ [( _* p& C* V 32, ; @) f5 p" G+ W$ q hWritePipe1,$ B% [6 U. ]( u8 [ FALSE) == FALSE) 8 J t+ N8 n; d8 D* i4 n {8 Y+ d# s: _4 L9 c9 j7 g( U printf("can't write datas to RS232\n"); . x G8 B% z: y7 A exit(0); & \1 z- O0 f5 A) {7 l- L0 Z- ~& y }

    strcpy(hStr, "thanks for purchasing me, "); ( B3 g* W( j! F4 N printf("thanks for purchasing me, "); * w+ ]+ v; A: n memcpy(&(hCommandBuffer[3]),hStr,26);8 W0 } |; H. ~% ~( K o2 ~ ) j- _+ e" S/ l+ Q7 n' K if ( hUSBIO( &hDeviceHandle,, Q7 Z) d4 r9 A/ w+ r: B' { hCommandBuffer,6 _( o- j) N4 \% _ 29,1 N- f V# @0 A- N* z, D# ` hWritePipe1, - z0 E# z. c, q FALSE) == FALSE) ' d4 n8 n9 }/ d" Y- H {( P" j7 B8 s5 l: j/ l4 H! P) n printf("can't write datas to RS232\n"); 9 v4 P# O: j6 j" n exit(0); $ O8 p9 ] }7 |; R" H, m2 C }$ M# W5 j, n" [+ e/ Q; m & P4 C6 b/ F7 q- ]8 C0 F. x strcpy(hStr, "If you meet some problems, "); - }7 @: }( G( g: J4 I printf(hStr, "If you meet some problems, ");, ]; J8 h1 R0 j4 i6 Z0 I5 t1 d memcpy(&(hCommandBuffer[3]),hStr,27); : R P; V+ C& r+ G3 Y6 X 9 b) t7 A+ [7 X3 V0 n; E& Q7 J4 z5 U if ( hUSBIO( &hDeviceHandle, ( z+ f0 J" a# f/ E" s4 _" [ hCommandBuffer,- R( Q) ?; a; U( C2 H 30,( d, d! @9 K& d5 s$ Q hWritePipe1, 3 l2 i) I6 g; C' ~- U. A1 n FALSE) == FALSE) % E) `$ e" C: I9 w {+ c& ~+ J3 \6 I9 u printf("can't write datas to RS232\n");1 S0 w! m( ]6 l* G" A exit(0);# U' `& x% e" Z/ V }

    strcpy(hStr, "pls contact my designer ");9 T3 ^- q2 f: `, H& W& Y/ x8 N printf("pls contact my designer "); 4 X3 b7 V4 V( x" R% ] memcpy(&(hCommandBuffer[3]),hStr,24); " V$ [3 Q9 o9 X) t- ? 4 r4 b; Q8 {- k5 V9 s if ( hUSBIO( &hDeviceHandle, ( K* Y9 M. R' B- c. R hCommandBuffer,8 a) I9 v2 _6 P# Y# H) R; H0 E 27,5 D# E% E1 T4 I Y* j) Q I/ `/ p hWritePipe1,( q4 U( J1 A# k8 K# G/ G FALSE) == FALSE)' R+ u7 ~/ P, {& b9 t { 1 j6 E f& R6 U: u+ i% @7 n printf("can't write datas to RS232\n"); 0 q1 B, i- C4 o1 b/ M8 U" b9 D. Z exit(0); 8 c7 G; G, o, m1 k, j; j }

    strcpy(hStr, "by email: hugehard@263.net."); B8 s3 b; P' @% M$ E printf("by email: hugehard@263.net.\n"); ; P0 w2 ]3 i! v! r- q, t memcpy(&(hCommandBuffer[3]),hStr,27); - S4 {2 L8 H' l% b, W- ^ " ], t* t. W! r! h) E9 z4 p" W* ]' k if ( hUSBIO( &hDeviceHandle, # c* }6 H3 n, d4 _. D hCommandBuffer,# s* [) ]5 B3 Q# S* v" u, t 30,9 e& P' W' t/ B \) c4 x5 t. ] hWritePipe1, 4 O! k+ ~* X8 o# D; f FALSE) == FALSE) p3 X3 ]" i7 I/ P& s, l. e. h {! \% L: u. s5 g: h printf("can't write datas to RS232\n");* A! E% v- j! o% m$ Q" o exit(0); s9 ?3 B' _8 u l1 T } # L V( m0 Y. I! p; O* \/********* call hDeviceOpen in hwdll.dll to open the board***/; N, C0 ?, T3 @. A" u/ n! _; y // hCloseDevice 说明:. G, ^7 |: p' d2 i: f: S' Q // BOOL hCloseDevice(HANDLE *DeviceHandle) 4 k" a. }" z0 P9 k3 ~5 L// 作用:关闭设备+ `. o: F0 Y6 y: J2 ]2 P! n // 参数说明: 8 f5 } y% R- F( P- ~+ e$ @; x// DeviceHandle:设备句柄 " H& D2 }/ E4 @4 x1 g) c' S// 返回值:) Y% i8 O8 V2 t# u // 设备关闭成功返回 TRUE,失败则返回FALSE0 c) p5 N, [7 y9 D5 B: i, S' C if( (hOpen = hCloseDevice( &hDeviceHandle ))==FALSE)/ w$ S8 L9 U* a" Q3 d {8 u7 s2 k7 c4 o7 M1 U printf("can't open device\n");. O% E5 g, P% a$ h* ^/ h printf("press any key to exit\n");( v5 D$ r2 R; H- j4 E% l getch(); % q- s# ^* l0 U ` return 0;$ {: y$ G: |9 G/ \- k Z } % Z, N) k1 t0 G else # O+ w) w- e5 b; }( O) _6 V! K printf("device closed\n");

    printf("press any key to exit the program\n"); , S) S# I+ c2 G* h$ ~4 w g$ ] free(hDataBuffer); * |/ L p8 ]. J3 i) o) | free(hCommandBuffer);# |) \6 c: T5 w. L l u- ?4 F getch();4 S$ O- S" y4 M7 P C! T% ^ return 0;- u0 H% L7 u. _ B }

    ' ?% b8 l6 B7 T. q3 A, a6 Q7 L , M7 w8 [8 t# [9 i - ]& O7 L# K Z/ u; a. ?Top 2 Q: M- L. Q+ A8 x6 { / W- z! u; J* n 回复人: aiyu33() ( ) 信誉:100 2003-12-17 11:41:24 得分:0 . v8 z& o' X; u, f8 }- j5 p ) T7 l5 t, D/ y3 P( ?2 I6 \5 { " D. _' e8 x+ M+ }5 S0 U- } 6 H. ?7 l' U" U# Eupupupupupupup

    7 e* `3 G5 X6 ~6 x / J# v) D; V9 e6 V% { Top ! P3 h* c3 e; u1 m0 | 6 c' |2 Z& ?" w# d 回复人: kingcaiyao(AKing) ( ) 信誉:110 2003-12-17 12:53:39 得分:0 8 s4 C/ d0 v) o ; N9 ]# r" r& L' _ 9 K# ^ d$ s5 w. r 1 ?6 D! d. w) V你开发的这种软件类似于Palm Desktop Software,负责Pocket与PC之间通讯,我建议你最好先写一个驱动,将USB口虚拟成一个串口,然后直接对串口操作会很方便的。我现在做的程序可能和你相似是一个CDMA模块,通过USB口与PC机连接,然后由驱动程序将它虚拟成一个串口,我的工作就是和这个虚拟的串口通讯。

    : d! g8 e$ r! N" Z+ D( ^2 a9 _9 X 1 h' ^, E, F3 ]6 nTop 8 G! B# O' t U9 k6 |) b4 |6 h 9 W$ i' E) h9 v" x 回复人: kingcaiyao(AKing) ( ) 信誉:110 2003-12-17 12:56:27 得分:0 4 G% u+ Q$ K# S% {; G( M7 h+ K " I# T* L$ I) ~5 I# t " r- k( Q, J- H' O$ ` ! ?' K% T' U5 W9 e# N$ k5 v8 f7 bPocket与PC连接肯定有驱动的,如果驱动程序没有将Pocket虚拟成一个串口,你也可以直接通过设备GUID和设备序列号进行访问,详情你参见我专栏上的一篇文章。当然了,通过虚拟串口来访问设备肯定要方便,简单些。

    " o3 Y: l0 k6 G$ s ! s# I) g' D1 c& @3 B# U Top 5 S M5 |# W- {6 U* [" ] 9 I" ^0 l* ?* N/ b 回复人: aiyu33() ( ) 信誉:100 2003-12-17 13:31:08 得分:0 ' i/ h5 V& b* t6 c7 B ! }( K; }$ S6 Y9 ]2 v- j0 v 0 h' _) T+ c7 L7 Z" [/ T' _ S: k4 k - Y4 D. s: t- Q+ O5 F+ o6 p我得这款pocketpc默认只支持使用usb与pc相连的,而且activesync3.7就是使用usb传输数据的。如果我自己写驱动的话,不仅不熟悉而且很可能activesync3.7这个软件就使用不了。我只需要利用它的驱动。你的专栏上的那篇文章我也看了,我就是模仿你的写的代码,但就是到createfile这步就不行了,我的同事是用palm开发类似的程序,也是到这步就行不通了,是不是有其他的原因? ) D1 q6 x1 w/ w我还想问问如果驱动程序将pocket虚拟成串口,如何查看它的符号名呢?

    0 T& s& M. N" l! T9 X. \ z 6 }0 A& f* T1 ~& X; i # Y) E/ ?/ [$ j1 g- s0 @& Z% F1 yTop : T; u) d8 ^9 F2 [3 R3 S ) T. m2 q/ F3 U4 ^% u8 q$ d% y 回复人: kingcaiyao(AKing) ( ) 信誉:110 2003-12-17 16:53:17 得分:0 0 b4 p9 J2 t$ I( P4 ^! l 4 \1 Q( T0 S+ X9 | / \ ?# Z2 \3 S, y. V" w * J( M% ~" T1 I( P; j+ f+ P H3 E 假如将一个USB设备虚拟成串口的话,那么它的符号名可能是COM3,COM4,或COMn,这根据你当前PC机的配置而定 。它的符号名位于注册表中HKEY_LOCAL_MACHINE\CurrentControlSet中,你可以搜索注册表,另外在2000或以上的操作系统中,你可以到HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SerialComm中看到。

    1 C2 t& }" I5 p0 V' Z7 @ ; U8 V: K3 j" o; \ Top ( A0 y" V+ N- f: m/ L % n! F5 B* \3 k+ M 回复人: kingcaiyao(AKing) ( ) 信誉:110 2003-12-17 16:55:33 得分:0 8 R4 a( d6 w/ v3 J / [3 V$ ?: t$ m- Z. E " j* C$ c3 g: U- k $ x) j( L$ {+ P7 {% |; ~! l; J2 K 我以前在一张贴子中详细回答了如何利用设备序列号和设备GUID来访问该设备,你可以搜索一下CSDN。你所说的CreateFile不能打通设备,你要查一下,你的符号名是否正确,包括设备序列号和设备GUID是否正确,设备GUID你可以从驱动程序的安装向导文件.inf中找到,设备序列号则需要你到注册表中去找。

    ; V7 L3 |' r7 ~9 i ( R+ K( s& M3 K+ l$ H" J7 |Top : g* O7 G$ p0 G* n . r% g5 L/ f* E5 ]; u4 G3 ?7 l 回复人: gyj_china(透明) ( ) 信誉:98 2003-12-17 18:15:30 得分:90 $ J! a- x6 M- `2 Z3 w/ D. V$ \; I 7 m9 g( r8 C: A; k 8 {7 r4 Z' g- C; A7 v ) m) E( R# v& J- V3 S% ~ 没有星星不敢发言:(

    : k$ H# N1 B$ b, X; v. x: W ' F+ ]1 |( l. ?% q" k% X Top # g/ L) Y) k3 W2 p1 o/ S * B- K# m& }6 p; W7 R1 A0 r; A' J 回复人: aiyu33() ( ) 信誉:100 2003-12-19 18:27:28 得分:0 , O |7 M5 ? A5 b 8 `9 I, H j2 g- j2 D 2 j. l" a& F' M \0 m4 B# K ) _. {/ B5 a( a! f: ? 不好意思,是因为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, 2024-4-25 12:00 , Processed in 0.805716 second(s), 99 queries .

    回顶部