QQ登录

只需要一步,快速开始

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

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

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

10

主题

1

听众

98

积分

升级  97.89%

该用户从未签到

新人进步奖

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

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

4 q3 g) @3 u/ P% r9 B7 x, V

我暈,看來這回死定了

' v- I% E+ {/ u

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

1 q: P& S1 }6 [0 Z _, \

老大救命哦

[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之打印函数: 7 @, l. E/ o* x; {AbortDoc 取消一份文档的打印 2 A$ s8 y( [+ x0 ?$ X) n% CAbortPrinter 删除与一台打印机关联在一起的缓冲文件 ( U4 g/ m" m8 {# S, q5 PAddForm 为打印机的表单列表添加一个新表单 ! e, c$ a0 l, {5 Q9 p0 I3 |+ l- r AddJob 用于获取一个有效的路径名,以便用它为作业创建一个后台打印文件。它也会为作业分配一个作业编号 ?3 l; i L6 d# g3 j: q5 U; w7 k0 {AddMonitor 为系统添加一个打印机监视器 6 p* ]8 t8 ?" {! WAddPort 启动“添加端口”对话框,允许用户在系统可用端口列表中加入一个新端口 " l5 n z$ P: ?' a! ]AddPrinter 在系统中添加一台新打印机 2 p; c! p i+ V; [ AddPrinterConnection 连接指定的打印机 9 T) ?( a" J( D7 A" mAddPrinterDriver 为指定的系统添加一个打印驱动程序 ( B$ d/ L* n& w0 l8 e AddPrintProcessor 为指定的系统添加一个打印处理器 2 _9 Y& h2 Z/ A# k6 o4 g" P AddPrintProvidor 为系统添加一个打印供应商 , J' R& N; R7 h8 E) b: NAdvancedDocumentProperties 启动打印机文档设置对话框 9 w0 O& ]8 Q V$ cClosePrinter 关闭一个打开的打印机对象 ) \/ g3 A5 D5 ^( X1 Z) PConfigurePort 针对指定的端口,启动一个端口配置对话框 $ a) t4 G% U/ f/ G) C! q" H1 D ConnectToPrinterDlg 启动连接打印机对话框,用它同访问网络的打印机连接 / ^# H! A# p5 O* h3 p9 ^/ K' e DeleteForm 从打印机可用表单列表中删除一个表单 ; l& Y; ` J( e4 ?8 r: K8 | DeleteMonitor 删除指定的打印监视器 % h8 J( X" E! t- b DeletePort 启动“删除端口”对话框,允许用户从当前系统删除一个端口 4 J1 P/ d) @/ d o. e, Z0 b( P# |DeletePrinter 将指定的打印机标志为从系统中删除 ( O/ O. k& \" fDeletePrinterConnection 删除与指定打印机的连接 $ d6 h! v$ x0 E3 i3 s) f D DeletePrinterDriver 从系统删除一个打印机驱动程序 1 ~9 F# B: W- p* u5 E' QDeletePrintProcessor 从指定系统删除一个打印处理器 ; y! i# e l, S$ Z DeletePrintProvidor 从系统中删除一个打印供应商 3 N% W" U9 g: ^) D+ m' ^DeviceCapabilities 利用这个函数可获得与一个设备的能力有关的信息 ( R% `' Q7 w5 T1 p% }/ g9 R+ Q DocumentProperties 打印机配置控制函数 * t. v+ h+ G& v! z EndDocAPI 结束一个成功的打印作业 $ |7 R. H& o8 ~- @3 m2 m* oEndDocPrinter 在后台打印程序的级别指定一个文档的结束 9 o0 r7 o& j _9 X$ j7 K' p EndPage 用这个函数完成一个页面的打印,并准备设备场景,以便打印下一个页 7 X, z8 `! d5 p3 |3 s3 A" m# aEndPagePrinter 指定一个页在打印作业中的结尾 / z+ {1 a1 p% Z+ _ EnumForms 枚举一台打印机可用的表单 ! `4 n7 S5 }1 ~( M1 y EnumJobs 枚举打印队列中的作业 ( P7 ~ z+ Q7 i EnumMonitors 枚举可用的打印监视器 * ?9 K2 A5 ` g. M: L7 S2 Y! C! XEnumPorts 枚举一个系统可用的端口 + N- K- ]5 v: Z$ [/ pEnumPrinterDrivers 枚举指定系统中已安装的打印机驱动程序 & u: \/ y8 E2 { EnumPrinters 枚举系统中安装的打印机 : Q! o: X8 p! X8 v- B EnumPrintProcessorDatatypes 枚举由一个打印处理器支持的数据类型 $ [' p! S: G; b EnumPrintProcessors 枚举系统中可用的打印处理器 , }; k7 m7 T, B! I; E9 k) c: |Escape 设备控制函数 R" I+ z2 L' z6 `+ YFindClosePrinterChangeNotification 关闭用FindFirstPrinterChangeNotification函数获取的一个打印机通告对象 ( {$ X5 B: D6 I4 ^! O6 S0 \% E( H U$ x5 J FindFirstPrinterChangeNotification 创建一个新的改变通告对象,以便我们注意打印机状态的各种变化 + }" W3 n- c+ Z! I e) V# NFindNextPrinterChangeNotification 用这个函数判断触发一次打印机改变通告信号的原因 7 q- d, H [) T4 u* ` }. nFreePrinterNotifyInfo 释放由FindNextPrinterChangeNotification函数分配的一个缓冲区 8 h% \" z, L9 C6 M GetForm 取得与指定表单有关的信息 ) m3 _9 ?0 q, O! s* Z/ bGetJob 获取与指定作业有关的信息 5 S* Y n$ T) ~, q/ X+ l3 D% nGetPrinter 取得与指定打印机有关的信息 7 G( H; i# f2 O GetPrinterData 为打印机设置注册表配置信息 & F" v& @! G9 d0 j GetPrinterDriver 针对指定的打印机,获取与打印机驱动程序有关的信息 3 o" @% `) D6 cGetPrinterDriverDirectory 判断指定系统中包含了打印机驱动程序的目录是什么 + I F3 h; N! O GetPrintProcessorDirectory 判断指定系统中包含了打印机处理器驱动程序及文件的目录 . h, V- O* }% v2 t, a6 QOpenPrinter 打开指定的打印机,并获取打印机的句柄 / f8 F9 x. Y- {/ G0 @3 D, @" MPrinterMessageBox 在拥有指定打印作业的系统上显示一个打印机出错消息框 9 z. p Q& F) ] R' J PrinterProperties 启动打印机属性对话框,以便对打印机进行配置 ! X" g; p$ _% c. T6 s7 R ReadPrinter 从打印机读入数据 : q5 k: R' O' `% P' H$ y0 V+ z: | ResetDC 重设一个设备场景 0 G) p& L* v; e6 }; E7 v0 ?1 U ResetPrinter 改变指定打印机的默认数据类型及文档设置 1 G+ _* V. c& ? u+ P0 U ScheduleJob 提交一个要打印的作业 & m+ H8 F. j! M( y D& c5 a9 L SetAbortProc 为Windows指定取消函数的地址 ' @" M U# ]0 x4 u3 V$ Q- L& A% { X6 j SetForm 为指定的表单设置信息 6 v- z, l9 c* V+ ?; fSetJob 对一个打印作业的状态进行控制 5 y6 A7 [* o$ p! D8 |SetPrinter 对一台打印机的状态进行控制 ' C/ n0 W( ^) \. ?; h1 ^SetPrinterData 设置打印机的注册表配置信息 # w4 h% A6 i5 ^9 ^, D( N: G StartDoc 开始一个打印作业 4 q* E- J% G0 S+ e* {* z4 z$ M) p StartDocPrinter 在后台打印的级别启动一个新文档 ) g0 }1 p- ~" ?- m2 w3 v0 s* u: bStartPage 打印一个新页前要先调用这个函数 + Q4 y7 E/ ^& e) `$ H- I2 P StartPagePrinter 在打印作业中指定一个新页的开始 ! O& {( v4 A Q/ m# p( I, s1 ] WritePrinter 将发送目录中的数据写入打印机 1 o- c; C" ~3 V5 O6 C2 u" o

    回复

    使用道具 举报

    ilikenba 实名认证       

    1万

    主题

    49

    听众

    2万

    积分

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

    [LV.10]以坛为家III

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

    群组万里江山

    群组sas讨论小组

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

    群组C 语言讨论组

    群组Matlab讨论组

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

    主  题: 关于usb通讯方面的问题。请AKing大哥及相关高手来看看,万分感激!!! * E0 J$ }. q; F 作  者: aiyu33 () ( N& O6 A; e$ ^* ? 等  级: 4 n& K! ?* q4 A% l: B* ~ 信 誉 值: 100 F! }8 s& U4 v9 k, J所属论坛: C++ Builder Windows SDK/API - j$ w8 [# i+ O9 ~: D- I 问题点数: 100 ' t- c# s# Z2 u' D2 F" v/ g! t' a; o 回复次数: 12 , Z) }# a/ }7 t' P& B 发表时间: 2003-12-16 20:43:13 9 O) |4 l7 }% L o) Q 8 \4 ~3 k+ |2 S/ e; }. Q # M- T6 }* d8 E9 h' ^

    最今我接到了开发pc和pocket pc通过usb口通讯的任务。这两个星期我参考了很多方面的资料,特别是AKing大哥写的一些文章。但我始终没有打通这个关口,我贴出我的代码请AKing大哥看看,现在很急,多谢。% d$ \+ C( }# G: f" N: Y$ Q: \6 a pc的os是windows2000professional 0 L7 |% R0 c dpocket pc是hp ipaq 2210,os 是pocket pc2003。7 v+ F$ k# F. q; k2 n. M: | 我装了activesync3.7。我查看过了,这个activesync目录下有pocket pc的驱动程序。pc也能识别。 - H& Q) d% V0 Z6 q) u# E% K下面是我在pc上调用usb的代码。) Q" s- C; ?9 g& g( h7 u 下面的代码我能打开hidn类型的usb,但是就是不能打开pocket pc的usb。 ' v5 s8 B; `/ e! s. g0 a# D7 m; d* r3 {//classGuid = {25dbce51-6c8f-4a72-8a6d-b54c2b4fc835} 6 }! b: `3 M: U. M0 I4 VDEFINE_GUID(GUID_CLASS_PALM, - { M4 C7 p, _) J1 L( [ 0x25dbce51, 0x6c8f, 0x4a72, 0x8a, 0x6d, 0xb5, 0x4c, 0x2b, 7 `, g) P' t4 z$ Y& v' m. X* y- p 0x4f, 0xc8, 0x35); q9 Q7 ~6 q2 x. w. ` GUID HidGuid = GUID_CLASS_PALM; 1 s2 q* W9 T1 [/ Z2 j! D- j/ y6 CHANDLE Get_DeviceHandle( GUID* pGuid) : b L: x3 U5 C{) U8 [. r4 G! I- y 1 h7 ~, G& }7 p! _1 _ HDEVINFO info = SetupDiGetClassDevs(pGuid, NULL, NULL, DIGCF_PRESENT | DIGCF_INTERFACEDEVICE); 2 S% S: Y* v% w / {: C# U2 V1 ?% p, G: D/ [, \ if(info==INVALID_HANDLE_VALUE) 2 j9 ^ ` F7 l4 \0 R { : s9 v0 N3 Y, s; P! T printf("No HDEVINFO available for this GUID\n"); & q u+ J. V9 P* t: J return NULL;2 Y, [+ s6 l. k0 W3 s }3 D, Y$ B4 Q: d- B2 Q& e SP_INTERFACE_DEVICE_DATA ifdata;( Q, }/ s. |5 L6 }/ V q# x ifdata.cbSize = sizeof(ifdata);# g. n! a! N( e, L" ]4 m) A' Z //0000是我在注册表中找到的序号 8 _* F! M! M- g% w if(!SetupDiEnumDeviceInterfaces(info, NULL, pGuid, 0000, &ifdata)): @+ n$ h+ l) _ { 2 k3 t) G8 V1 p( P- W printf("No SP_INTERFACE_DEVICE_DATA available for this GUID instance %d \n", instance+1); % ^7 V! g7 L0 e E5 d( O" X SetupDiDestroyDeviceInfoList(info); " u. v4 a2 l& e _2 W return NULL; ) G5 D9 C+ @$ h, Z! k$ s }

    // Get size of symbolic link name2 x" U; B* C( R DWORD ReqLen; ; M: t. a) a' J9 n , X/ U& F- a' b# M' S: f3 x SetupDiGetDeviceInterfaceDetail(info, &ifdata, NULL, 0, &ReqLen, NULL);: r& S+ c! `6 O 0 O& d; g- U- M, \4 Q PSP_INTERFACE_DEVICE_DETAIL_DATA ifDetail = (PSP_INTERFACE_DEVICE_DETAIL_DATA)(new char[ReqLen]); 8 t8 y! Y3 G2 z% |+ x1 O' } - Z' Z4 O, c2 \* B if( ifDetail==NULL)' Y* s# e& o* l4 [; n/ ]" |( K {2 }8 i o7 p3 s& C SetupDiDestroyDeviceInfoList(info); 5 o/ V6 V1 p- `2 R; F2 ~( O return NULL;* _; `& v; s* ^$ } }

    // Get symbolic link name5 C5 H: W' f; E! C, f ifDetail->cbSize = sizeof(SP_INTERFACE_DEVICE_DETAIL_DATA); ) N7 _7 z; Y7 Q/ Z % ~+ D# V2 o) l. s" p/ ~ if( !SetupDiGetDeviceInterfaceDetail(info, &ifdata, ifDetail, ReqLen, NULL, NULL)) ( Z! M( ]0 R, [ {8 ^4 r+ }# }7 B, L7 U" j1 M- l SetupDiDestroyDeviceInfoList(info); ' ^7 P4 a4 { z' l% A' R9 m delete ifDetail; |8 @1 S; K. b6 W! L return NULL; / g. |6 u# Z4 A0 E& z, [5 H2 H6 m0 d1 K7 B }

    printf("Symbolic link is %s\n",ifDetail->DevicePath); $ b# G4 F- v: [) S* b% ~

    /*\\?\\usb#vid_03f0&pid_1016#5&1bc41f6c&0&1#{25DBCE51-6C8F-4A72-8A6D-B54C2B4FC835}这是ifDetail->DevicePath的内容*/. v: x0 p1 G/ f# B1 ] // Open file ! z6 ?( B K+ p2 a//前面都很正常但就是下面始终得出一个无效的句柄,我也就无法开展下一步的工作., n& `: Q( `1 G, e- b4 F# r0 x HANDLE pDevice = CreateFile( 7 K8 a0 g t: _. ^6 D# d3 E8 L, C ifDetail->DevicePath, 5 j. J& s) F9 K2 R# M5 c3 r GENERIC_READ | GENERIC_WRITE, $ _/ O( U0 m5 A7 q1 r$ A FILE_SHARE_READ | FILE_SHARE_WRITE,! |# e; k X9 F/ U+ w NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); ) y3 |0 Z6 `% r4 B% D - ~. w8 U3 e+ }- r if( pDevice==INVALID_HANDLE_VALUE) pDevice = NULL; ; |9 F3 l. I7 A$ H# ~$ @1 ]9 c SetupDiDestroyDeviceInfoList(info); / O, m }$ X- K- ]9 B% d 0 M; x/ N/ \9 x1 z' @ return pDevice;" c# t+ e. z e0 g& C% I } n, s9 Z$ |2 N# i, }: B 再次感谢关注这个问题的人们。

    % _; L% X) x5 f# }0 B: k+ T, k ; z# d3 X& i v5 N( ? ( t( C" s/ w* F 回复人: constantine(飘遥的安吉儿) ( ) 信誉:101 2003-12-16 21:23:57 得分:0 % _& N, T j( {) @- l) F " w5 {5 Z. u9 A: c& T7 [ 4 L* x5 G9 [# q2 R* J 5 g; s3 V/ _* D/ Z7 ]study

    . i/ ?+ e, ?# h4 y( @ 3 }) C. ]- v% l$ t4 YTop - `! Y" j C' u4 ^0 I : E0 p( F7 M8 T! D% d' M1 I 回复人: wenyongjie(一个想成为大鸟的小菜鸟) ( ) 信誉:95 2003-12-16 22:28:46 得分:0 ( C+ A/ E' v) y& H/ f( X% k : R( ?: q( E# q# h* } 8 u _. V1 ^9 l 0 m6 o& h$ @! d H' K 只有学习的份

    & g6 q8 |/ w8 }9 l6 c% G 2 p0 X4 `7 l$ v% G! l( V% j# QTop % n* O+ w. D. [2 x# Q* V. O, N 6 O, I6 n# O6 K/ e' d" y& r6 u* w; C 回复人: HUANG_JH(保卫钓鱼岛) ( ) 信誉:115 2003-12-17 9:50:41 得分:10 3 B, b3 [% E0 d& M9 ?" l1 c : p; K1 D' Y+ @( l # h |& b( r @ % V& R+ M: J* y2 q k+ I不知道有没有用!

    /////////////////////////////////////////////////////////////// 3 Z* r4 k4 a+ G+ v// HW9911 evaluation board software Rev. 1.0& \9 ^8 D& n$ }$ D* M // program by Liu Ding, Bei Jing HEAD Elec. - f6 G, P5 F& l3 N+ J" m$ S# a// this is the main program for the HW9911 USB device evaluation board# Q4 O- |, e- v' E& V# o // it illustrate the basical read/write process of HW9911 , o1 _# T3 W) w2 m6 W& t// by three examples: , o" F+ v' [" S0 K8 e" K// 1. write datas to ram on the evaluation board- x8 N& {; s. v+ n( C0 l // 2. read the datas from the ram on the board - p4 d9 _0 r6 G// 3. send datas through RS-232 serial prot on the board/ C$ f0 j( t' l$ F$ |. X: @0 \6 P // ) j! v$ }5 p5 z5 t // the whole project are build with MSVC 6.0! L* l( @# O2 M# I3 [ // and tested on windows 98 platform. |6 U. B/ ]4 n2 q4 f6 m: [/ o// 2 Y% _& {0 Y" ]1 u. V// notes: you can use hyper terminal to reaceive datas form RS232 port3 S" F; k h# d5 d H2 v$ P //1 c& g% E% P5 @0 V; c2 {) } // this software are designed by Liu Ding - v- S$ m( x7 H+ N, w% W// if you meet any problems, pls contact by email: 1 C: R* z: E/ V6 K// hugehard@263.net/ \& p( A9 H( M3 t // or contact HEAD Co. by Tel 86-10-87312497* a" Z) \# L+ M8 N4 Q# n // or by fax: 86-10-87312495 ) c$ q! ]$ b0 @9 L3 y. S///////////////////////////////////////////////////////////////

    #include "hwdll.h" 7 r9 D* X5 p% A& i#include "stdafx.h" $ ?- c: F% |3 X3 O6 b#include <stdio.h>! S0 T! c& m, {3 |* B5 X #include <windows.h> . x ? _4 ]' m& Q) l- W a#include <memory.h> 5 D4 R( d7 z. ]) i#include <DEVIOCTL.H>7 h# x" o0 p* l: x* Q" U" Z #include <stdlib.h>* G/ {3 L7 P) E& g5 f7 K- J #include <conio.h>( g5 Z5 e6 M7 E. X1 J( h) F1 o #include "hw9911.h"- O7 ~) }* }$ u y #include "test9911.h"

    8 C2 t# U. C& S1 ^7 u int main()( F+ B! s6 b, A$ N/ z* ` { ) a0 q- c& P* _9 Z+ o. |5 ^ int hOpen=FALSE; ) l( V" H1 [) Y int hCommandLength=32;6 E, N( w. X5 n, `: Z int hDataLength=64;6 D6 @9 T ]& a& [ int i,VertAddr=0,HorAddr=0; 2 C& m) ]1 n4 A5 N1 D int addr,TotalLen;9 I" v3 v6 u9 x+ N& g USC StAddrH=0,StAddrL=0;! k' V+ B2 h! O) L3 X( m- \8 k. D USC DataLenH,DataLenL; 8 o, _0 }) i! ?5 Q" g5 }1 z, U4 x# r3 U, k USC *hDataBuffer,*hCommandBuffer; / J- m& q% f. C6 E9 q& Y USC ch1=0x61; 4 S- o0 L: S3 ?; F HANDLE hDeviceHandle;& x8 W& h |1 B9 ~! I ; f7 C) ~% W: s1 C" ~ printf("************************************************\n"); 2 n( I8 V8 x; g/ c9 D printf("*******HW9911 USB DEVELOPMENT BOARD*************\n"); - h, J2 ]6 Z( M2 k printf("************************************************\n\n"); * n1 d5 a) d0 Q# l/ K# x, n# k& u printf("now press any key to open board\n");" b6 J- u) n, @8 K& \* Z getch();

    /********* call hDeviceOpen in hwdll.dll to open the board***/" N9 |6 l! B5 v( g( c" v b //hOpenDevice 说明: 4 b* Q! |1 {9 Q3 B5 j& n, j6 h// BOOL hOpenDevice(HANDLE *DeviceHandle)* t# O o0 s: V4 Z$ b4 X8 z, z0 T // 作用:打开设备7 o) u5 Q. Q: X% w/ O // 参数说明: ! M* W4 z9 \ }% ^1 k. g6 p8 Y// DeviceHandle:设备句柄 " N% s/ g. O. L1 j9 ^5 N// 返回值: 1 b' \1 @6 w+ @' }' ?3 M% l- O8 \// 设备打开成功返回 TRUE,失败则返回FALSE 0 d1 _+ o* m4 U) D* ~3 ]- a, z if( (hOpen = hOpenDevice( &hDeviceHandle ))==FALSE)6 Q$ S2 f1 }" v& y { % G1 r/ G4 O. x' I' h printf("can't open device\n");, x" E0 o4 F. K9 b+ x* ^# k printf("press any key to exit\n");) Q: \. i3 |" \8 X) @, O+ ~( S getch();, o! X; p, I# S# l& T b return 0; $ F X' |1 i- r/ T } " F* q% W/ x" c% ^ else . {$ O1 @* G' j printf("\nCongratulations! device opened!\n\n");

    /****** build and send command **********/ , g* h4 M) S* Y( t( A/ O' L4 R printf("how many bytes do you want to access?"); & M6 e4 \" v( j, y, U7 y scanf("%x",&TotalLen);; {/ @7 y4 d5 k( Q while(TotalLen > 0x7fff) ; W6 o3 s% K. H4 h {& H- [" j' _. S printf("pls input a hex data less than 08000\n");7 X- [0 H* P" Z4 d! _/ x) _6 f scanf("%x",&TotalLen); - ^: R& z9 D$ o U } 4 S# q6 }$ m6 l2 G( f3 X DataLenH=(USC)(TotalLen/0x100); //data length high bytes ; ?4 [- e' V I DataLenL=(USC)(TotalLen%0x100); //data length low bytes

    printf("************************************************\n");/ B2 J$ T A2 V+ ] printf("now program will write datas to ram on board\n"); 0 ~2 a* J. X2 K( ?' {% x) C printf("total bytes of datas is %x\n",TotalLen);; p' m. L) m% ~$ x printf("press any key to continue\n\n"); 6 P1 ^1 F. \8 r- o$ F7 r7 f getch(); 4 J* e0 r6 S$ C& p% L6 G2 |/*****************************************************************0 C9 q3 R: C0 A* u6 V& w+ w now will build a write command packet & z5 \4 a8 T! u" O! ] with the first byte is 'w'.' m- @: h7 g0 r9 R( S" s1 h and the following bytes are: ) Z) c1 V# a7 c start ram address byte high, start ram address byte low,% ?0 n4 l e3 D3 V datalength byte high, data length byte low.1 C! B$ U! N" I0 w$ q this packet will send to device through WritePipe1, $ ~. X; W+ w/ d which is endpoint 2 of HW9911. 8 c+ @8 u5 l: Z) S0 _ when the device receive this command packet,% b. e) m$ @! o* b/ w it will write TotalLen bytes data to Ram on the board b0 E) }* l/ T; k0 Y* ~0 M8 ?( y******************************************************************/

    5 f2 o( ]9 c2 P! m hCommandBuffer=(USC *)malloc(hCommandLength);5 H; \, ]$ u- S/ _' u hDataBuffer=(USC *)malloc(hDataLength); ' C! o1 X/ w2 O hCommandBuffer[0] = 'w'; //read command* }6 @. b' C% x* n hCommandBuffer[1] = StAddrH; ! ]; d/ [! F8 a6 d hCommandBuffer[2] = StAddrL; % l7 n# b* y, K6 G9 ]. L hCommandBuffer[3] = DataLenH;) h; t! @5 ~5 l, x# v( k: r hCommandBuffer[4] = DataLenL;

    /* call hUSBIO() in hwdll.dll to send command packet to device*/ 5 `0 C$ X- I, E( N4 j) U// hUSBIO 说明:, ^ G$ t0 ~( @ // BOOL hOpenDevice(HANDLE *DeviceHandle, [+ { }' G* S // unsigned char *IOBuffer, 2 }2 ?) s- x$ W0 a// int BufferLength, % J$ o$ x( k1 r8 v" x' {6 F// int PipeNumber,: I1 d5 P( c7 c/ P9 J: F: [# | // int Action). b$ K& T1 B0 j // 作用:设备读写% }6 I( i4 S& r4 X% b# g // 参数说明: 0 D7 E" @/ j4 a+ j// DeviceHandle:设备句柄 . V9 o: J4 C* q( A% c// IOBuffer: 指向要传送的数据指针2 C" k" T6 t2 A q5 M# T1 o // BufferLength: 数据包长度 4 ^. R+ _" w/ R: M// 对于发送缓存1、2和接收缓存1、2,BufferLength必须小于或等于32; c, P, a" [$ m: L6 M // 对于发送缓存3和接收缓存3,BufferLength必须小于或等于64/ c% H: q& F* K. M/ ~/ _! b e // PipeNumber: 通道号 % E+ p5 [1 N" a; {3 {// 发送缓存1:PipeNumber=0;; u% A( b! Z {7 F7 ] // 接收缓存1:PipeNumber=1; 2 q( x- |) D7 a// 发送缓存3:PipeNumber=2;' |2 A: d2 _" n8 g C* ~% \) ]+ h // 接收缓存3:PipeNumber=3; : h+ p6 n% I( o& M// Action: 读写标志。TRUE代表从设备读数据到主机 ! Y$ U/ c, v+ C V9 `% v/ O// FALSE代表从主机发送数据到设备 ! O/ P( _$ F7 S* d' {! y* X6 Q// 操作接收缓存,Action必须为FALSE R4 A3 e. K+ p! H. d3 t6 P* X // 操作发送缓存,Action必须为TRUE4 p0 g+ L( N) a" B // 返回值: # E h! U9 Z# _6 k, H// 操作成功返回TRUE,失败返回FALSE

    if ( hUSBIO( &hDeviceHandle,2 t, i+ u4 {. l* U8 f5 C& n3 p hCommandBuffer, ( S& P# P) W3 c2 M/ i$ |" J) ~ hCommandLength, ; o; k. L# i- S- k' ^ hWritePipe1,5 R; A7 b' t9 C FALSE) == TRUE)- x2 _( }+ x/ q' d$ s4 M# X" F. x {/ O* {! ?7 v( g& w printf("command 'w' writed to board\n"); , g1 u( I0 ^. M printf("now press any key to write datas to ram\n");0 Z( m4 ^1 h- U D, e% N- j getch();( L+ L' n! s& S5 A }) y1 c" i" k E8 M else0 _2 c6 B. r. F! D- B printf("data can't write to device\n");

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

    printf(" ");* N9 ^- d ]( Q% B' h7 _7 m% t9 X for(VertAddr=0;VertAddr<=0xf;VertAddr++) 6 J) T/ @1 S' A9 V$ h printf("%02x ",VertAddr);) M7 F" ?( @+ k printf("\n"); 6 {; a7 R5 L7 y. f- B; ` addr=0; {4 V, K1 X1 G6 \+ r while (addr<TotalLen)& B9 q/ r% a% L6 ~. r0 v3 a7 [ { 5 |/ ?8 Z9 n- }; z; ^: n; P if (addr+hDataLength > TotalLen) + A9 Y# \& }, u; ^4 v0 {: T hDataLength = TotalLen-addr;6 Y! u9 M& T# C& } for(i=0;i<hDataLength;i++), d; i0 z+ X* G. W2 B: n {, O$ S3 e; a6 b3 L( ?( { hDataBuffer=ch1++; 6 c) j8 a# P& P3 z+ g if (ch1 > 0x80) ' S5 h9 f% b/ o' i1 J$ a ch1 = 0x61;3 \5 H0 P- @% l' [- p }0 u8 i3 v% [2 d& P. w3 r A' v /* call hUSBIO to write datas to write pipe3, which0 h6 y. w5 ^- W is endoint 6 of HW9911*/

    if ( hUSBIO( &hDeviceHandle, & @+ I% p* {# w2 f- J hDataBuffer,6 S% S ]# K" C$ ]! `5 s hDataLength,+ O& t" m/ f9 W/ U& m1 P% V: S hWritePipe3, % L( X d# s) s/ ~5 j, t" P0 @/ T FALSE) == TRUE) //FALSE means Write operate & b. E4 a/ a* c6 ^6 E/ S" K! G2 k! {$ _ { $ q f" f9 j/ D" w( b! {# Q for(i=0;i<hDataLength;i++): h) b* Q3 l) M$ r. n) T( Q. A { & g' s1 a6 N$ ^5 r! [/* print format control */ , m, O, C% O3 v6 V if(i % 16 == 0) 9 P% F$ i! m5 W( u% Z { 8 N, s, G8 h1 a6 z printf("\n%04x ",HorAddr);- x: ]6 T9 B! _/ |3 Z HorAddr=HorAddr+16; ; {% ]9 m9 K) G$ }3 w/ V }9 y- S/ W8 y) z o8 T" o9 Y printf("%02x ",(USC)hDataBuffer); - n3 L" d* Q3 B }( Q& W# l2 d; r9 e, b addr=addr+hDataLength;( W3 }$ R5 \, J; w }2 u4 M9 A# G4 Q8 ~6 }0 p( @6 ~ else 6 n8 \- f7 F$ J9 O) D8 f {7 B. x, j$ `$ _ printf("can't write to board\n"); ( _. c9 z9 F. _# X/ @ exit(0);! C4 w: Q3 b g) ~! W$ f }6 ], J" @; L' G }% O& S) q N9 g+ e+ E5 Y$ U printf("\n\nTotal%x bytes write to ram OK\n\n",TotalLen);

    # N2 @6 O" |: h - V9 V& F* t( {% |; KTop 7 L6 K) D$ w2 q9 @' V 0 C/ t8 J5 C- I, O1 W 回复人: HUANG_JH(保卫钓鱼岛) ( ) 信誉:115 2003-12-17 9:50:51 得分:0 # K. `9 e$ C: O5 ]9 [& \# y: J # N9 j: T0 H9 X( Y0 q- P" M/ a . c4 m. B0 S( F; Y- \; }4 U; D" B

    /***************************************************************** . R \/ e9 H" T& [3 ] now will build a read command packet $ {5 m" }1 H$ j( i# i with the first byte is 'R'.# K. S+ r% i" N! h; J" Z3 ` and the following bytes are:2 L) N7 F% ]* L2 J' ?# j; A start ram address byte high, start ram address byte low, ) |9 t, m# I: Z7 ?; }+ V; | datalength byte high, data length byte low.- x! \0 {; Z( y: ? this packet will send to device through WritePipe1, n4 d/ R! ?% h! A/ T- a which is endpoint 2 of HW9911.9 o! Z5 g' y0 ]' p% Z when the device receive this command packet,2 ?: Q& F! A1 l% b it will read TotalLen bytes data from Ram on the board . Y" o$ {5 P# a, h/ y6 v2 L0 T******************************************************************/

    printf("************************************************\n"); ) [- P3 N$ J% v: v, G5 R# }, L printf("now program will read datas from ram on board\n"); C/ v5 K1 b3 E! o printf("total bytes of datas is %x\n",TotalLen); $ ~% V# t5 H' ]2 g printf("press any key to continue\n\n"); 3 o4 e% i* D0 z( o+ f9 @- `1 p getch();9 i( A& g( c' ~* ?; \% @& E hDataLength=64;# Q; ~3 H3 ?( z hCommandBuffer[0] = 'r'; //read command: y9 m. v# Y T) E0 f; }+ w* X hCommandBuffer[1] = StAddrH; # ]- t9 ~/ i. m: B/ ~0 B hCommandBuffer[2] = StAddrL; & C) [; F5 L1 j/ @1 [ hCommandBuffer[3] = DataLenH;5 u- b; S; h8 o; X* Q hCommandBuffer[4] = DataLenL; + a! k) v8 C/ L( s7 E$ F8 W' ]& l /* call hUSBIO to send packet */+ N( y% P3 h0 S: J2 {# J/ ` if ( hUSBIO( &hDeviceHandle, 8 M2 T# X4 H7 f* E1 D, I, l hCommandBuffer," V1 O) Y ?6 [' T) a E hCommandLength, " O) K) y7 l: P hWritePipe1,8 [8 s/ ?' y- k- Y FALSE) == TRUE) % D3 E, b; J) _& U W) @ {1 R' m/ e! f/ K- d! A. E0 g$ O printf("command 'r' writed to board\n");) h7 w+ }/ ~; h+ P; | printf("now press any key to read datas from ram\n\n"); 7 C$ q5 i' ~, Q) @# z0 } getch();2 D! A+ s9 k, U6 |# v* S9 r }7 m, s: L9 G; n* K else8 g, K& _7 O, u printf("data can't write to device\n");

    /******** read ram data form board **********/ ( a) Q" k& k* L; [" M. \% e1 K! R printf(" "); 4 O: o* `) ?9 u( f U/ L" ? for(VertAddr=0;VertAddr<=0xf;VertAddr++)- h7 E0 K0 O! [ printf("%02x ",VertAddr);/ k: \4 u$ d. P) _2 L# E% V printf("\n");2 N! s$ P+ {& L' B% u$ F' W addr=0;4 W% ^' C) _7 D' h* J HorAddr=0;# t1 _+ k) X7 J, L1 G$ |+ } while (addr<TotalLen). G" x g; H5 s' I: s+ l' `+ R { ' u' Z3 P$ f/ c Z4 y4 F if (addr+hDataLength > TotalLen) & F- n5 n$ K- h' a* Q( L hDataLength = TotalLen-addr;6 f* @4 U5 D& p5 r /* call hUSBIO to read datas from board */ . \( h+ N1 e* Y* }5 a6 o if ( hUSBIO( &hDeviceHandle,, q% i5 x, }9 H% a- v* @ hDataBuffer,. q' k4 g/ B- A4 Y hDataLength, * N y5 W# C# b* P hReadPipe3, : t: a$ G- {) E" N! g TRUE) == TRUE) //TRUE means Read Operate7 z* ]! t+ f+ H8 W+ g {( }" P" X% M% i6 N5 f! Z for(i=0;i<hDataLength;i++). P W& C6 I4 F5 Q) w9 v { ) x$ q, T% w3 A1 G/* print format control */+ C, n* o$ `2 ? if(i % 16 == 0) & q5 d) Z" E3 F+ w" C { 1 N* [( O% A* ^7 Q3 @ printf("\n%04x ",HorAddr);$ H4 J( C" y g HorAddr=HorAddr+16;5 i$ Z: X, [8 J+ ? }/ H# a6 l9 l( q$ R! J printf("%02x ",(USC)hDataBuffer); {0 U7 b% F0 l& l$ w# ^ }; D. l8 h7 A; G: r6 Y* |/ B addr=addr+hDataLength;* q7 J8 n+ Z: B& Z$ P$ N }$ ?0 f5 X7 W* a else 0 r' P r" U; C# S" g+ \ {# f+ E z- J, ?5 ~9 j printf("can't read from board\n");' }' i a8 f8 d) A- A exit(0); $ r6 t8 h% t8 _: D3 e/ t4 U }. n" n" B1 G7 V& i6 \ }7 E* X: A9 X9 i& M) _! a# c: a printf("\n\n"); - y- W( Z& a! M) W# K8 k9 [ printf("%x bytes read from ram OK\n\n",TotalLen);

    /*****************************************************/ . s# J1 \; v/ K$ U% e/* process rs232 test */ ) j0 \8 C1 H! O8 \% b* x/* the first byte in this packet is command 's' */1 t5 q8 j. T$ c0 Z /* and the following 2 bytes are used to set */ - ~+ k: t1 x& F3 |/* the baud rate of 8051 */( q6 m5 u9 f8 k3 Y) B /* they will be write to TH1 and TL1 respectively*/ 8 m3 p8 c( D$ ]. ^; L3 f; p( E/* the following bytes are datas will be */ 4 F0 e6 s, z9 F1 ~2 L9 Y# V/* send through RS232 serial poart */& l: p7 r% S; O /*****************************************************/ ' l }: y: j! Y' Q+ v! A. x printf("\npress any key to process RS232 Test\n");, O9 V: E: T7 n+ ]# | getch();. O2 I+ Z4 K( w9 D( X i* M/ x, d% B, W) [5 s USC TH1,TL1;" K( g ~4 S, z. l% \0 w char hStr[30]; * j7 h- c0 w3 l2 J% S2 X; C TH1=(USC)(BD9600/0x100); ) d. _) {% G4 o2 Q; B TL1=(USC)(BD9600%0x100);; o% R9 {6 J( K* H' U2 ^% y) Z7 E hCommandBuffer[0] = 's'; //read command8 M' P& R1 _( a/ z; M1 _% i7 r hCommandBuffer[1] = TH1; 2 H5 J( Y' X$ [ u; f hCommandBuffer[2] = TL1; //start address is 0x0000

    strcpy(hStr, "Hi, dear HW9911 consumers! ");4 K$ G; u* \; h5 Q" w printf("Hi, dear HW9911 consumers! ");. r; ^: m/ e+ o6 [+ V4 |) |& w% S memcpy(&(hCommandBuffer[3]),hStr,27);

    if ( hUSBIO( &hDeviceHandle, Q) z8 N4 C9 `& o0 S5 B hCommandBuffer, ; g8 ^0 m0 C6 |: V: ]- ~2 g 30, $ B2 z" b1 h) X6 Y' S hWritePipe1, # V1 x9 x D! H FALSE) == FALSE)2 P1 i7 |; A) _2 T- G# H { . v5 Q7 _1 k; n S6 E8 F; v. | printf("can't write datas to RS232\n");$ J) F! Q& H# K; @ f; `; Z. k3 e exit(0);) }5 m2 ]: `( M6 ]9 `% w* m5 p }

    strcpy(hStr, "I'm HW9911 Evaluation Board, "); * `/ [$ h3 R3 z ~7 b6 H printf("I'm HW9911 Evaluation Board, "); 5 C" L! g9 C, K2 c5 U memcpy(&(hCommandBuffer[3]),hStr,29); 5 }- |0 `: V# B$ ]; Q0 T& i) W / } C# W* `6 o: p" q+ Q2 l# B if ( hUSBIO( &hDeviceHandle, ) m, N; ]# e8 n) N hCommandBuffer, I' }$ i- O* b% v$ l* e3 d 32, / Y' C* y! S' N3 h. G# K7 f hWritePipe1, $ r* p. l6 z% Y# T8 U FALSE) == FALSE) |# J6 ~ F8 W! ^, u* B { : \9 p% t% R/ x% o2 \0 o printf("can't write datas to RS232\n");; e& h: r6 K: D, I2 O$ D exit(0); ' B; S" C/ j0 u) D }

    strcpy(hStr, "thanks for purchasing me, "); 4 l& @/ N1 y. E printf("thanks for purchasing me, ");; a" k8 `2 L( f: r, U memcpy(&(hCommandBuffer[3]),hStr,26); ' ~; @8 {" m& e 7 h/ a6 g# b$ \0 O2 \/ f if ( hUSBIO( &hDeviceHandle,9 c+ r+ H& O2 G' z4 R; ?) s hCommandBuffer,) B, u1 K- D6 w4 x7 @* ? 29,4 j: \8 x8 j. V7 _8 H' Y5 Y4 Z0 U4 v hWritePipe1," P" M" b. D9 b) ]/ p5 H FALSE) == FALSE)% M# K2 Z9 N9 X' C { / ^$ ?$ S- w; i, x* ^( X printf("can't write datas to RS232\n");+ V9 Z- h3 F6 w) @% \ exit(0); 5 _3 V7 e5 c/ `# a. g7 o } % O/ I4 D' @$ Z1 P 4 a! M$ a7 v- S% x& o strcpy(hStr, "If you meet some problems, "); 6 U% |9 g' i4 B- i9 f printf(hStr, "If you meet some problems, ");4 L7 Q# x7 S/ j memcpy(&(hCommandBuffer[3]),hStr,27); - {1 C3 g" o/ l 6 Q4 Y. x( a4 W' v5 L( ~# W( Y if ( hUSBIO( &hDeviceHandle, / @% I* S6 J* O# @1 E1 G! `; S( j hCommandBuffer,# I+ C0 x4 J6 l# f 30,* s. g& e5 m" k6 j hWritePipe1,, K; b1 c( g: x- X5 n& Z FALSE) == FALSE); Q: [$ B: P) K# }1 n3 S3 m {, _+ R: `: Y t+ q printf("can't write datas to RS232\n"); 8 ?8 @; [7 n$ a0 k exit(0);9 G3 F' R4 [5 u }

    strcpy(hStr, "pls contact my designer "); / O3 h4 ?; ^! e* J printf("pls contact my designer "); 0 V% I6 U: }8 v: \% O b memcpy(&(hCommandBuffer[3]),hStr,24); ' E' y: W% k- I' }4 ^6 y 6 F# d- Q* }% X. f" | if ( hUSBIO( &hDeviceHandle, . p1 `( U: p8 ?. s; K, S( } hCommandBuffer,( J# E0 D1 g: q8 a& P* L 27,) p8 e# w5 Q: }# y& v* h# ]9 j hWritePipe1,* k9 S: A2 j6 h% J7 y3 a. c FALSE) == FALSE) $ L8 N; A# ~. b {. ~) f4 b: ]4 I9 q) c3 o9 [5 w9 |% @ printf("can't write datas to RS232\n");8 m. s, b4 K3 V0 o( p; P& a exit(0); w) ^7 K. P* ?( w }

    strcpy(hStr, "by email: hugehard@263.net."); 5 r7 }' V% j. Y6 H+ Y) c printf("by email: hugehard@263.net.\n");5 m9 `" X( Y/ {. ` memcpy(&(hCommandBuffer[3]),hStr,27);! l# A( U G, ]. n) ]* F ! z* G, X+ ?& T if ( hUSBIO( &hDeviceHandle, 0 t& F2 \ j; E hCommandBuffer,( T/ e: f( @0 j3 n7 K9 o' l$ I 30,# A( n! E3 X- k/ r/ i8 E hWritePipe1, ' d6 _: }% F1 _0 V FALSE) == FALSE)/ X% {: D% A, R2 I2 ~# x- k/ S# r {/ P+ T( F' }. e printf("can't write datas to RS232\n");. j1 h% q+ d. F2 ^/ z' E exit(0);* ~3 K$ r4 P* n# E. o: @ } 9 U9 k) z5 g- e7 |; j8 g/********* call hDeviceOpen in hwdll.dll to open the board***/) q; G n% c# N3 l // hCloseDevice 说明: 3 B7 d, _3 j2 g# Q; I// BOOL hCloseDevice(HANDLE *DeviceHandle) - j5 [4 O P& d0 ?# I: c5 `: o0 m5 u// 作用:关闭设备7 l; v6 G) Q0 g A // 参数说明:& J0 u5 y. ?/ e& u+ P3 X( l. w // DeviceHandle:设备句柄9 ~; W4 S/ T: I/ k$ B P' Q // 返回值:3 O% I4 p, u( y8 |% ^, R // 设备关闭成功返回 TRUE,失败则返回FALSE - @( v8 T1 B) @# m8 T: [# ` if( (hOpen = hCloseDevice( &hDeviceHandle ))==FALSE): \/ q' R" F$ D8 \) R {; W1 {. Q5 N0 ^. B7 g! a* O printf("can't open device\n");( o/ l o$ u, _3 u% B/ X printf("press any key to exit\n"); $ l7 Q# ^; h0 N$ K4 a: n3 I" i getch(); $ t) B0 O( n5 Y& t" E! Z return 0;% h, A9 v4 A+ e0 J. g }" R; y) u7 u" B9 M* J else 3 l& A! E# P; a3 ` printf("device closed\n");

    printf("press any key to exit the program\n"); ' i% k; p5 J4 z- x- s8 t free(hDataBuffer); . ~5 W! ?+ Y3 P j2 m# d free(hCommandBuffer); 3 a- W" A ` c5 r getch();) X9 k( n1 X2 p6 w* ^/ C return 0; & P! J, J; t4 q/ U8 `* z}

    % u6 t* |* @3 l/ J, D* n1 A8 } & m4 k/ g& h- y * c' n( P# S' h; eTop ; [8 n5 ] q: m9 G / Q+ u2 A/ k6 r+ O/ w) [" ^ 回复人: aiyu33() ( ) 信誉:100 2003-12-17 11:41:24 得分:0 - K+ [$ x1 b0 k, N7 E, w ) r$ z3 N2 j+ a3 d* X6 _8 Z / j" m. @# e" } % q+ c! X* N# C& j upupupupupupup

    / ~3 q" \) O. \ h9 [5 ]3 x! t: U% l I& nTop ; D& t' l* j6 _ ' l, f0 H/ h$ R; o5 y3 ~& _, c6 K 回复人: kingcaiyao(AKing) ( ) 信誉:110 2003-12-17 12:53:39 得分:0 3 l% b$ G9 {. D- q ) t+ R8 ~! T, B, z- L7 G; A # I# b% X# h% _4 ^0 O m* \4 Q# d+ U! {' f) R$ D 你开发的这种软件类似于Palm Desktop Software,负责Pocket与PC之间通讯,我建议你最好先写一个驱动,将USB口虚拟成一个串口,然后直接对串口操作会很方便的。我现在做的程序可能和你相似是一个CDMA模块,通过USB口与PC机连接,然后由驱动程序将它虚拟成一个串口,我的工作就是和这个虚拟的串口通讯。

    ( b" d- G& |: }2 g) A / @3 u0 I3 y' B& _- R* ~6 iTop ) O2 v$ y. d3 q : w; p1 O4 ?( y8 j# F 回复人: kingcaiyao(AKing) ( ) 信誉:110 2003-12-17 12:56:27 得分:0 . n2 j" l9 G7 s0 Z $ u( l4 }2 K, A- K8 f& K8 D) u$ R' _9 ? ( B [8 ?: `1 n5 a% Y9 N; u ( q/ N @& L# ~; w; G5 rPocket与PC连接肯定有驱动的,如果驱动程序没有将Pocket虚拟成一个串口,你也可以直接通过设备GUID和设备序列号进行访问,详情你参见我专栏上的一篇文章。当然了,通过虚拟串口来访问设备肯定要方便,简单些。

    ' w' p# O; v1 U2 @7 i+ ` 9 N/ w0 R! f8 p T" [$ fTop ( P* f: y6 n# [% l6 r7 u7 Y ( V3 O' w c6 ?5 j1 w. C% q 回复人: aiyu33() ( ) 信誉:100 2003-12-17 13:31:08 得分:0 + t# V( b) j- H. t. g* p 6 T! s3 Y& [! B6 D ; N! u+ b) N# A, J9 p/ V $ y! C% x$ |! _% d% T% g我得这款pocketpc默认只支持使用usb与pc相连的,而且activesync3.7就是使用usb传输数据的。如果我自己写驱动的话,不仅不熟悉而且很可能activesync3.7这个软件就使用不了。我只需要利用它的驱动。你的专栏上的那篇文章我也看了,我就是模仿你的写的代码,但就是到createfile这步就不行了,我的同事是用palm开发类似的程序,也是到这步就行不通了,是不是有其他的原因?7 q: p) X5 z* K% r: o 我还想问问如果驱动程序将pocket虚拟成串口,如何查看它的符号名呢?

    # c3 S6 b5 P8 }% H- j7 F # s2 g8 C7 q( |4 F) P A . K9 p5 C" E" c7 s V% q( x Top 2 |- T4 j9 B. W3 I s; j1 w8 t3 ?! v$ C$ u 回复人: kingcaiyao(AKing) ( ) 信誉:110 2003-12-17 16:53:17 得分:0 + W! m+ t x- q; t* d) I' z6 S & r7 ?5 q; Z0 R " R; m5 s, {" G + a2 k8 u. h- L s$ p( q 假如将一个USB设备虚拟成串口的话,那么它的符号名可能是COM3,COM4,或COMn,这根据你当前PC机的配置而定 。它的符号名位于注册表中HKEY_LOCAL_MACHINE\CurrentControlSet中,你可以搜索注册表,另外在2000或以上的操作系统中,你可以到HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SerialComm中看到。

    2 x4 D- G6 g' { I @. j* N+ O6 `7 n4 u" v, v/ S Top ! }3 |, {0 w* z/ z3 u ! _) P6 y6 \1 C- E6 ~* @. T 回复人: kingcaiyao(AKing) ( ) 信誉:110 2003-12-17 16:55:33 得分:0 - ]1 I4 ~! ~; b! F- i- n+ V2 P9 m s! a: a# \5 \: \ V% n! i) p1 ] 7 A1 L$ T. q9 J我以前在一张贴子中详细回答了如何利用设备序列号和设备GUID来访问该设备,你可以搜索一下CSDN。你所说的CreateFile不能打通设备,你要查一下,你的符号名是否正确,包括设备序列号和设备GUID是否正确,设备GUID你可以从驱动程序的安装向导文件.inf中找到,设备序列号则需要你到注册表中去找。

    ' P- }1 b8 @$ h3 J5 a6 \ 7 |- L! o) k; | Top 5 Y" o% {1 t2 s5 P- ? ( m ^1 R" f$ Y2 S7 w4 J+ T' u( M 回复人: gyj_china(透明) ( ) 信誉:98 2003-12-17 18:15:30 得分:90 $ |8 U: v: @0 x+ W 3 L: v+ l9 T. R+ I! E f7 H : S Y# i+ S/ n, J0 t 0 m* c, n3 n# m3 ^* Z# s) f 没有星星不敢发言:(

    8 ?& {9 u. M( L1 P ( U' I4 D s" h8 f4 N/ R) m- wTop 3 c% m4 c; H9 F' n3 | 6 y/ _$ Z1 f- d( c 回复人: aiyu33() ( ) 信誉:100 2003-12-19 18:27:28 得分:0 1 n: s; Q7 Q6 e% \) P / }* O/ H. F& N - M) o" ^- d9 [1 Y+ i( Q7 I 2 y% I7 z) s4 x不好意思,是因为ActiveSync3.7一直在系统服务程序中运行,占用了驱动程序,所以不能打开设备。我删除了ActiveSync3.7后就可以了。

    回复

    使用道具 举报

    kenneth        

    10

    主题

    1

    听众

    98

    积分

    升级  97.89%

    该用户从未签到

    新人进步奖

    回复

    使用道具 举报

    10

    主题

    3

    听众

    33

    积分

    升级  29.47%

    该用户从未签到

    回复

    使用道具 举报

    arvinlai        

    5

    主题

    2

    听众

    65

    积分

    升级  63.16%

  • TA的每日心情
    难过
    2011-11-20 22:41
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    群组Matlab讨论组

    回复

    使用道具 举报

    arvinlai        

    5

    主题

    2

    听众

    65

    积分

    升级  63.16%

  • TA的每日心情
    难过
    2011-11-20 22:41
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    群组Matlab讨论组

    回复

    使用道具 举报

    0

    主题

    3

    听众

    10

    积分

    升级  5.26%

    该用户从未签到

    群组2011年第一期数学建模

    回复

    使用道具 举报

    0

    主题

    4

    听众

    43

    积分

    升级  40%

    该用户从未签到

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-7-13 09:15 , Processed in 0.648186 second(s), 99 queries .

    回顶部