QQ登录

只需要一步,快速开始

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

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

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

10

主题

1

听众

98

积分

升级  97.89%

该用户从未签到

新人进步奖

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

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

( G4 r7 t+ b# O. z

我暈,看來這回死定了

+ u3 a0 g- Q" H5 i- t& j4 }

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

& v7 m( ]( l' @' N* H- E% J& v

老大救命哦

[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之打印函数: 9 F4 A; B/ [4 w1 V( LAbortDoc 取消一份文档的打印 4 Z! [3 P& @: ^1 @. d0 D1 R" f AbortPrinter 删除与一台打印机关联在一起的缓冲文件 4 p9 H6 W# S+ ^- o# i, ? AddForm 为打印机的表单列表添加一个新表单 7 w* L2 r& p- b% @9 T' y5 ?AddJob 用于获取一个有效的路径名,以便用它为作业创建一个后台打印文件。它也会为作业分配一个作业编号 : ?# p! g# Y% x* @3 O2 ] AddMonitor 为系统添加一个打印机监视器 3 V$ S: u+ w: b6 o+ S2 U: {AddPort 启动“添加端口”对话框,允许用户在系统可用端口列表中加入一个新端口 * F9 q$ Q! q0 C' Z( q) _2 W& v: qAddPrinter 在系统中添加一台新打印机 " O6 m6 ?! G1 ?& G C AddPrinterConnection 连接指定的打印机 3 c% g" F8 x: W4 [ AddPrinterDriver 为指定的系统添加一个打印驱动程序 - W( e' Y) g- |+ h6 i9 U/ d5 V AddPrintProcessor 为指定的系统添加一个打印处理器 # ]! B/ U( x) q/ A6 T AddPrintProvidor 为系统添加一个打印供应商 - J$ j+ s( A' H4 r5 Z5 R' v AdvancedDocumentProperties 启动打印机文档设置对话框 # i/ Z! Z# d: P+ k" mClosePrinter 关闭一个打开的打印机对象 " x; P$ t5 {9 T! ^0 K$ zConfigurePort 针对指定的端口,启动一个端口配置对话框 ; V( f1 V) j, B X! a) Z2 M2 \9 A ConnectToPrinterDlg 启动连接打印机对话框,用它同访问网络的打印机连接 / y+ Q' U$ q3 R d$ \% y DeleteForm 从打印机可用表单列表中删除一个表单 0 c4 M0 T1 ^0 @4 B1 m* E9 o; \ DeleteMonitor 删除指定的打印监视器 T2 O( L- [9 H3 YDeletePort 启动“删除端口”对话框,允许用户从当前系统删除一个端口 - \+ H& J& y5 M. j% e' P0 s DeletePrinter 将指定的打印机标志为从系统中删除 : ^* `2 u/ [( J; jDeletePrinterConnection 删除与指定打印机的连接 7 s! f* c$ ]9 x& C: x k3 d, MDeletePrinterDriver 从系统删除一个打印机驱动程序 ) \) J) ~5 S6 T! ~& T7 Z DeletePrintProcessor 从指定系统删除一个打印处理器 - x. Y! x: V! ZDeletePrintProvidor 从系统中删除一个打印供应商 % @4 m. N6 m% ^$ HDeviceCapabilities 利用这个函数可获得与一个设备的能力有关的信息 8 k9 J6 M- v' w DocumentProperties 打印机配置控制函数 $ X' g( A8 r9 c0 {" A( H& E7 d/ v: u EndDocAPI 结束一个成功的打印作业 : x* p! [) ~7 a/ H, m( W0 O7 }1 P EndDocPrinter 在后台打印程序的级别指定一个文档的结束 / a2 B4 R# b f5 [% A! N4 O/ qEndPage 用这个函数完成一个页面的打印,并准备设备场景,以便打印下一个页 2 B4 {4 [$ a* d; V* `- E EndPagePrinter 指定一个页在打印作业中的结尾 3 Z* d3 o! z v# _0 z2 N- | EnumForms 枚举一台打印机可用的表单 7 n0 T, K( z3 GEnumJobs 枚举打印队列中的作业 : l( Y1 a" Z( c# U" s9 REnumMonitors 枚举可用的打印监视器 ) E8 v, @$ U' R- ]5 b4 eEnumPorts 枚举一个系统可用的端口 9 ~2 m2 q: W' [7 u; g EnumPrinterDrivers 枚举指定系统中已安装的打印机驱动程序 ' V. f* s& R+ w: e& w EnumPrinters 枚举系统中安装的打印机 ) p0 ^9 t8 k" z2 _/ F- J5 |5 @! X EnumPrintProcessorDatatypes 枚举由一个打印处理器支持的数据类型 7 D: v/ m+ O; C3 u+ m; ^+ Y EnumPrintProcessors 枚举系统中可用的打印处理器 * x3 }! J! ^! `7 p6 X Escape 设备控制函数 / V; `5 \9 |! i9 Z4 \2 C" pFindClosePrinterChangeNotification 关闭用FindFirstPrinterChangeNotification函数获取的一个打印机通告对象 ( l/ @( \: }7 x8 M9 ZFindFirstPrinterChangeNotification 创建一个新的改变通告对象,以便我们注意打印机状态的各种变化 0 ~) R- u8 O/ H! E) QFindNextPrinterChangeNotification 用这个函数判断触发一次打印机改变通告信号的原因 8 [' c, a1 _) dFreePrinterNotifyInfo 释放由FindNextPrinterChangeNotification函数分配的一个缓冲区 * ], d( w/ x* p: b; r9 T3 f% gGetForm 取得与指定表单有关的信息 8 R; Y6 B' f( Y GetJob 获取与指定作业有关的信息 % l3 M1 R7 u# n, MGetPrinter 取得与指定打印机有关的信息 $ l2 u1 A& y6 l- y' \9 Y6 R# O GetPrinterData 为打印机设置注册表配置信息 & B' j! P9 W3 V( ]9 J$ U( ^6 \GetPrinterDriver 针对指定的打印机,获取与打印机驱动程序有关的信息 ! a+ g% c h7 s0 T- d( d9 F GetPrinterDriverDirectory 判断指定系统中包含了打印机驱动程序的目录是什么 2 X7 i! x/ b% j B! `+ JGetPrintProcessorDirectory 判断指定系统中包含了打印机处理器驱动程序及文件的目录 ; E$ S4 z" h! Z- W" f1 F5 [ OpenPrinter 打开指定的打印机,并获取打印机的句柄 , p( W0 t1 v* i# C& \PrinterMessageBox 在拥有指定打印作业的系统上显示一个打印机出错消息框 * Z, n) a5 U8 E+ t6 O; E' _& NPrinterProperties 启动打印机属性对话框,以便对打印机进行配置 9 E9 F( k' v3 q ReadPrinter 从打印机读入数据 7 j# p3 j* u" jResetDC 重设一个设备场景 ( e* ^" T; l8 C7 d0 n$ { ResetPrinter 改变指定打印机的默认数据类型及文档设置 . w8 Y8 D! O8 g5 _# x! _- FScheduleJob 提交一个要打印的作业 ' L% }6 S+ Y" ^8 U7 a9 CSetAbortProc 为Windows指定取消函数的地址 4 \8 d- _/ A- i1 c& I6 s nSetForm 为指定的表单设置信息 0 n# R7 _% p! w2 ]6 |0 h, f( y: _ SetJob 对一个打印作业的状态进行控制 / b4 }$ p) ~% ?4 Q( H SetPrinter 对一台打印机的状态进行控制 * U! ^) f9 f8 f" i f3 T- A! uSetPrinterData 设置打印机的注册表配置信息 / v6 |8 S3 z& u9 J8 e1 d% z& [StartDoc 开始一个打印作业 " q c. z5 G* \) T2 z StartDocPrinter 在后台打印的级别启动一个新文档 " m, M9 \, i( A% f0 `/ S$ k StartPage 打印一个新页前要先调用这个函数 $ m* T6 j+ a. ^' U Q' E( X2 RStartPagePrinter 在打印作业中指定一个新页的开始 4 ^& T) U) M) g' A WritePrinter 将发送目录中的数据写入打印机 * o# q* t" R# i7 {& k: d9 ~6 I

    回复

    使用道具 举报

    ilikenba 实名认证       

    1万

    主题

    49

    听众

    2万

    积分

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

    [LV.10]以坛为家III

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

    群组万里江山

    群组sas讨论小组

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

    群组C 语言讨论组

    群组Matlab讨论组

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

    主  题: 关于usb通讯方面的问题。请AKing大哥及相关高手来看看,万分感激!!! $ A. C: X2 }0 k5 O$ e作  者: aiyu33 () 4 g6 u: _5 E4 r; n) x4 f 等  级: f* X/ u/ F! H5 Z2 S信 誉 值: 100 6 g2 P, d6 k% J( b$ F f 所属论坛: C++ Builder Windows SDK/API 5 I8 h% R' ~9 | 问题点数: 100 7 ` ~1 ?* N2 z0 a 回复次数: 12 t, t% k5 O+ V. t发表时间: 2003-12-16 20:43:13 * K. a+ K) Q$ z- B, K5 p 6 ?( u2 i/ x- ?+ K . L9 U/ Y/ w+ c! W5 c. V. ^6 G8 ~

    最今我接到了开发pc和pocket pc通过usb口通讯的任务。这两个星期我参考了很多方面的资料,特别是AKing大哥写的一些文章。但我始终没有打通这个关口,我贴出我的代码请AKing大哥看看,现在很急,多谢。 b4 L' ?* U+ Opc的os是windows2000professional6 ]2 P# C, u' x0 w: h B pocket pc是hp ipaq 2210,os 是pocket pc2003。 . u6 S) M9 P" T! U我装了activesync3.7。我查看过了,这个activesync目录下有pocket pc的驱动程序。pc也能识别。/ T) e8 Z3 N& a- g 下面是我在pc上调用usb的代码。 $ b7 Z, }7 {/ M- ^下面的代码我能打开hidn类型的usb,但是就是不能打开pocket pc的usb。 , o5 S: {% ?" p9 h8 ]//classGuid = {25dbce51-6c8f-4a72-8a6d-b54c2b4fc835}+ t7 I+ B0 |7 T6 M# \2 l9 z DEFINE_GUID(GUID_CLASS_PALM, . ^& F W1 l9 M" ]7 v% `3 ? 0x25dbce51, 0x6c8f, 0x4a72, 0x8a, 0x6d, 0xb5, 0x4c, 0x2b, 3 D) d4 o6 m, O* a' G h 0x4f, 0xc8, 0x35); : r6 J Z6 K% w* F( iGUID HidGuid = GUID_CLASS_PALM; 8 R$ B3 X7 Z' b. [3 V* A+ A+ @HANDLE Get_DeviceHandle( GUID* pGuid) 4 b. R# a" p& F2 {% p{ 6 o* O3 H2 i5 S! O: o8 U / g4 \5 Y u5 _# a HDEVINFO info = SetupDiGetClassDevs(pGuid, NULL, NULL, DIGCF_PRESENT | DIGCF_INTERFACEDEVICE);; Q, m; `5 ~% \6 } 9 K5 a' z! k# e4 j/ S% K k if(info==INVALID_HANDLE_VALUE)/ Z! s( x7 @, U* \/ Q- s { 2 r9 {: f5 {% q2 k4 X& [+ U printf("No HDEVINFO available for this GUID\n");% E/ v$ a' a; `7 u return NULL; $ k* s2 a6 O3 t1 c, ~3 U: K8 T } ! P7 D7 v6 f1 y# O SP_INTERFACE_DEVICE_DATA ifdata; 8 P/ q: u7 l; l) A2 V" v, X ifdata.cbSize = sizeof(ifdata); ; ?! Z2 S. O% {3 n% Y//0000是我在注册表中找到的序号 9 e; a0 A& u2 D# T3 j if(!SetupDiEnumDeviceInterfaces(info, NULL, pGuid, 0000, &ifdata)) p! e* d V4 H f# B/ E3 ? { ! \% x5 R1 k+ V( o- p& o. v printf("No SP_INTERFACE_DEVICE_DATA available for this GUID instance %d \n", instance+1);" E |. B E! r) K6 g3 p SetupDiDestroyDeviceInfoList(info); % z7 y/ K' _% S# O/ g. A/ n1 e return NULL;, [" y8 F0 I5 j9 t7 P }

    // Get size of symbolic link name 0 M4 [- |2 R- R# }4 ^0 d DWORD ReqLen; x1 f9 `" {. M$ K) x0 L - {1 L0 i7 W6 e8 T3 }/ | SetupDiGetDeviceInterfaceDetail(info, &ifdata, NULL, 0, &ReqLen, NULL);: X0 u* b! y+ K * _% Q. F; L3 k PSP_INTERFACE_DEVICE_DETAIL_DATA ifDetail = (PSP_INTERFACE_DEVICE_DETAIL_DATA)(new char[ReqLen]); 4 {5 p2 H1 h3 r- h7 T0 a+ K% I : {& L% z: y4 v% g; I5 ?2 }- V if( ifDetail==NULL)& ^! }$ b; P4 D: e {: }3 |% p5 Q: l: v9 b2 k SetupDiDestroyDeviceInfoList(info); ! J2 K( l6 }; K return NULL;; B+ l0 Z5 n* W1 T" p4 R; c }

    // Get symbolic link name. _; q% A7 N7 p3 `$ a ifDetail->cbSize = sizeof(SP_INTERFACE_DEVICE_DETAIL_DATA);9 I: B1 e9 M9 E2 Z5 @ ] # T. S& W2 `- O if( !SetupDiGetDeviceInterfaceDetail(info, &ifdata, ifDetail, ReqLen, NULL, NULL))3 c% L" ^& S; Y8 T1 ] { 8 a" m+ G- e* V2 c5 l2 W( S SetupDiDestroyDeviceInfoList(info); # Y; L& ]* e3 z" J- j, z delete ifDetail; 9 q+ c2 w3 T3 i9 s return NULL; $ z. E! ? Q. A4 V7 `# f, D }

    printf("Symbolic link is %s\n",ifDetail->DevicePath);. ]# \( u, ~5 F

    /*\\?\\usb#vid_03f0&pid_1016#5&1bc41f6c&0&1#{25DBCE51-6C8F-4A72-8A6D-B54C2B4FC835}这是ifDetail->DevicePath的内容*/3 Y/ t7 w! g( n D6 ~' q // Open file! g& ^9 ~, M4 @( L3 H+ V, U, F //前面都很正常但就是下面始终得出一个无效的句柄,我也就无法开展下一步的工作.4 L. d' w* C- F, b9 L HANDLE pDevice = CreateFile(2 m: m$ V$ B/ o4 _ ifDetail->DevicePath, / C- U+ B2 O$ M. T GENERIC_READ | GENERIC_WRITE,# a) f! K$ g$ J0 L( \ FILE_SHARE_READ | FILE_SHARE_WRITE, $ \! F9 b1 R$ E& ~ NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); x8 _9 s% K- u! i; j 6 I& z$ |0 ^5 X0 w$ F F, \3 N if( pDevice==INVALID_HANDLE_VALUE) pDevice = NULL; " c1 i, y! V- [# Y; S( r5 d/ C SetupDiDestroyDeviceInfoList(info);( l2 [9 I& `, B8 z; S4 j, {/ f & a7 b: Z6 l; X9 S return pDevice; 1 ^- w) i& v/ ]}( E. I0 L9 B: M( n! w/ m 再次感谢关注这个问题的人们。

    % v" i1 h8 m" H 4 v' C8 S: C+ @2 c H" I8 p' h" H3 j 回复人: constantine(飘遥的安吉儿) ( ) 信誉:101 2003-12-16 21:23:57 得分:0 9 r, `- x" e7 s4 E / R8 E7 u' L' B8 s) ~8 u * y- G' M8 c1 o: C) v4 D" w M; V , [; n8 n" w6 z, gstudy

    6 B# s( S5 u$ W4 L! P ! J/ g i0 W) p d1 i. E6 Z1 [Top 7 B3 O: c2 `. U- O# B% g 3 b6 |! ~7 ]# G; x' v' g! S& _ 回复人: wenyongjie(一个想成为大鸟的小菜鸟) ( ) 信誉:95 2003-12-16 22:28:46 得分:0 3 f6 d1 T& P; A1 ` ( y; n! U- u" L' ?" j& u 8 S9 j7 q( h0 |5 N/ j ; z6 ^: J7 B: {' y: z只有学习的份

    4 O$ T# S, [0 C6 M 7 N5 ]' G7 ~. W+ A% N Top 0 h% q! c9 u9 \3 t" m9 F [ . o6 W( Q1 V0 ?' G' t' n 回复人: HUANG_JH(保卫钓鱼岛) ( ) 信誉:115 2003-12-17 9:50:41 得分:10 ( R# r+ U$ l% K1 c # v, _7 e) W+ s0 z3 Y# V$ d 0 I) G4 h- c6 n* x3 H ! m2 E+ \- c% }( }3 \7 Q( b 不知道有没有用!

    ///////////////////////////////////////////////////////////////8 m$ x& _1 }. v ^ j, T5 V // HW9911 evaluation board software Rev. 1.0 ) h5 S. Z& x8 ] r" {1 V// program by Liu Ding, Bei Jing HEAD Elec.8 H) q3 N' E2 ~ // this is the main program for the HW9911 USB device evaluation board% E" x8 Z' }' T3 j2 T/ H // it illustrate the basical read/write process of HW9911 1 v; y* J4 i, Z; a }// by three examples: 0 U: v- t* x, h0 H$ C// 1. write datas to ram on the evaluation board% M6 N& i w. n/ q5 H) L6 S // 2. read the datas from the ram on the board ) o5 B: D/ S i; z; v, u5 x// 3. send datas through RS-232 serial prot on the board1 @$ S# E8 w; W _# O // 1 Q+ j$ E9 m* Z( {1 H3 r // the whole project are build with MSVC 6.0' \- p! G3 z6 g4 f // and tested on windows 98 platform. 9 Q8 P+ P: l: z' y! I1 [// ! b$ U; P' |& U( Y/ O( Y! N// notes: you can use hyper terminal to reaceive datas form RS232 port0 K# e2 a3 @, F. B" l( [ w* h7 f( [, ]& X //9 W* e% t$ m/ `2 X( T5 q% i( t( \ // this software are designed by Liu Ding! c% Z5 q _0 L, w. Q // if you meet any problems, pls contact by email: $ j4 y0 f0 P5 }, `! D3 Q' O* M// hugehard@263.net ' g0 |, c9 u" Z// or contact HEAD Co. by Tel 86-10-87312497 ; ^$ H& B6 g) [// or by fax: 86-10-873124958 o! c& ]) ]- E, I: l ///////////////////////////////////////////////////////////////

    #include "hwdll.h"% V5 M# w2 g& k& B #include "stdafx.h" T8 Q- x6 F+ G1 O#include <stdio.h> ) P3 K8 L/ z; K2 e2 |/ T5 n#include <windows.h>/ b# i! W5 b8 Z: }8 } #include <memory.h>& s1 U. c6 x& G9 t8 H #include <DEVIOCTL.H>' f6 i1 j+ m u3 g4 a5 y0 S7 S% k6 B! R #include <stdlib.h>: E& `* k# t1 O0 f3 Z2 {7 T #include <conio.h> : B, K9 ~$ [+ `# L#include "hw9911.h" & k! t) x- c; A5 b/ |; B$ ^#include "test9911.h"

    ( y3 D; s" {7 Wint main(), C2 n: L2 _3 c. ^5 w { ; [% M$ k, U, H7 P+ m int hOpen=FALSE; * O( G) s. w. v4 Q" a int hCommandLength=32;! M5 P$ Z+ H. |# I- I! I3 |8 b int hDataLength=64;7 x5 k9 T: t8 [3 W- Q int i,VertAddr=0,HorAddr=0; 0 ^0 P, Z. q1 i& |* O1 U# N int addr,TotalLen;, `0 U6 M, I: ^ USC StAddrH=0,StAddrL=0;( @* R$ c2 h5 n+ [: f5 g2 Q USC DataLenH,DataLenL;. @" x8 {1 v$ e! M7 q USC *hDataBuffer,*hCommandBuffer; ! V4 s1 X( v R# C5 A# D" \ USC ch1=0x61; * W" {" t- k# ]( B! K HANDLE hDeviceHandle; ( H- x6 G$ B9 t/ V ) H9 X9 ]$ t) Y; u2 A printf("************************************************\n"); ) ]6 B+ `1 U6 F. w* n+ Y1 q4 d printf("*******HW9911 USB DEVELOPMENT BOARD*************\n"); $ s9 d" p: m; o, G' Z: M printf("************************************************\n\n"); 1 B9 ?% ]" p6 ]: `1 s printf("now press any key to open board\n"); 0 \! N1 t$ E3 V getch();

    /********* call hDeviceOpen in hwdll.dll to open the board***// Z. W1 z- Q# A7 Y( R( v //hOpenDevice 说明:. n5 \- R+ U3 d! u% D4 K+ I# z // BOOL hOpenDevice(HANDLE *DeviceHandle) ( ?* U J1 p2 u// 作用:打开设备 8 v4 C- g9 Y9 A7 `% j& K2 n// 参数说明: 0 V |5 c! R5 h& m0 v// DeviceHandle:设备句柄/ j: V( C) t; x* T3 ~ // 返回值:. Z, u6 x' Z* A- W. l' ~ // 设备打开成功返回 TRUE,失败则返回FALSE * R X' l0 b; T4 { if( (hOpen = hOpenDevice( &hDeviceHandle ))==FALSE)* ^( Y6 u( \* T. s: C4 ^$ U {+ J% Z+ D, w5 x" ~/ i3 y1 {* w printf("can't open device\n");6 L8 _+ {0 N+ C0 t9 |1 e; M printf("press any key to exit\n");1 j7 @- e# r8 F% G getch(); 4 u" L S0 V8 j M return 0;( _7 M. u+ P$ x1 \6 _" J } % y; u, A/ F7 A% a else : u" r( V) }; P! Q( s6 } printf("\nCongratulations! device opened!\n\n");

    /****** build and send command **********/8 @& Z4 c7 s% X& {8 \- X printf("how many bytes do you want to access?"); 5 \9 i {7 e2 b* c: g scanf("%x",&TotalLen); 0 Y/ ]3 ?8 p. F1 Z( ~! g3 {1 N while(TotalLen > 0x7fff)3 _* p" B7 R( ^0 z {* B" E+ h+ R3 G7 s* C: P printf("pls input a hex data less than 08000\n");" H3 L b+ l4 V3 I0 L, _$ U scanf("%x",&TotalLen);8 u e7 A' D3 B7 E } " \ u+ q( U$ F DataLenH=(USC)(TotalLen/0x100); //data length high bytes ) O, \# U" U$ C/ \8 r DataLenL=(USC)(TotalLen%0x100); //data length low bytes

    printf("************************************************\n"); ( f4 n* r2 E) x$ n% \& n printf("now program will write datas to ram on board\n"); 8 Q4 X! [5 B9 f# ^ W7 C- a printf("total bytes of datas is %x\n",TotalLen); 4 m" c/ j1 c; b& @' i( L( U0 ~5 i. I# X printf("press any key to continue\n\n");$ `/ F4 D; A8 X: V- D6 ~ getch();8 W" d3 M: t; F$ q# n5 g /*****************************************************************, {* [6 t3 P' H; u now will build a write command packet ! g0 s3 L$ L& |, {. [1 D$ {* i7 f with the first byte is 'w'. 5 l% G9 l. {, P. ?0 p( I" z8 ?+ L6 m and the following bytes are: + _, C, I: \% p7 t start ram address byte high, start ram address byte low, 7 o8 c- F' k" ^5 R3 o datalength byte high, data length byte low. ; ~7 e5 W" h; n this packet will send to device through WritePipe1,3 p. U' Z/ V* `) X4 d, L- V! \ which is endpoint 2 of HW9911.7 i3 Z* B m5 m% [' r when the device receive this command packet, & V, u; L& ~1 @% R it will write TotalLen bytes data to Ram on the board , {, T. O- R1 _- T4 J! ~* S; |$ R******************************************************************/

    6 C. I. Y* H1 z0 l/ r+ U7 ~ hCommandBuffer=(USC *)malloc(hCommandLength); # g! T. o. h1 N% }) O) T5 n- r hDataBuffer=(USC *)malloc(hDataLength);8 D. _' L# a2 {) ?0 w7 H hCommandBuffer[0] = 'w'; //read command 0 K( c5 B" S4 g/ Z3 e% q V ]" v4 X hCommandBuffer[1] = StAddrH; ! M# G* {, R# E. o5 [3 g0 G* f5 I hCommandBuffer[2] = StAddrL; v7 R* K4 I) e( P6 [ hCommandBuffer[3] = DataLenH;2 R: P/ Q' J! m; M( m2 f8 i hCommandBuffer[4] = DataLenL;

    /* call hUSBIO() in hwdll.dll to send command packet to device*/ 9 ]3 v' ~2 Y- Z* v; ~ u// hUSBIO 说明: 2 `9 }) \# `! t* ~/ v// BOOL hOpenDevice(HANDLE *DeviceHandle, 2 }% A7 G3 \' D# p5 W// unsigned char *IOBuffer, 8 T9 l6 l3 I( s+ Q n// int BufferLength,5 m" `; A5 M/ ?$ C; \+ p/ c+ M( p // int PipeNumber,/ U1 ~+ e/ R$ j# X // int Action)9 [/ L2 @5 W' {7 U3 z, N$ X' X // 作用:设备读写 ?+ c- z0 N; b( m // 参数说明: * M* ? w& Q; M8 u- I// DeviceHandle:设备句柄9 U4 s" Y' P2 O) c1 ]8 ~ // IOBuffer: 指向要传送的数据指针 $ I' k% R$ y) y7 v& J// BufferLength: 数据包长度 0 K5 K k4 M5 F' M- K) Y// 对于发送缓存1、2和接收缓存1、2,BufferLength必须小于或等于327 [+ Q" X V5 W! Z) Z // 对于发送缓存3和接收缓存3,BufferLength必须小于或等于64, @, {8 @ A* T // PipeNumber: 通道号* ^9 i1 f/ W- b& j$ ?) e // 发送缓存1:PipeNumber=0; l, c- S6 j8 d& w+ t0 R+ y// 接收缓存1:PipeNumber=1;1 r0 O1 S3 I w // 发送缓存3:PipeNumber=2; 4 o' i5 c g) ~5 K: u// 接收缓存3:PipeNumber=3; + O8 {& G1 }2 K; E// Action: 读写标志。TRUE代表从设备读数据到主机 2 K- J' j2 J+ F' Y// FALSE代表从主机发送数据到设备 m) k9 I- | ^+ V// 操作接收缓存,Action必须为FALSE/ @! J6 D6 r5 J- V9 A // 操作发送缓存,Action必须为TRUE# |0 q; J' Y2 d7 g // 返回值: 7 y3 ^3 m* j0 T, {& r// 操作成功返回TRUE,失败返回FALSE

    if ( hUSBIO( &hDeviceHandle,7 X; l' E+ v% o' O hCommandBuffer, ' P8 c3 {7 I% P$ i) v. H hCommandLength,0 v0 r. E; ]) `2 G hWritePipe1, k2 o" a/ u9 W2 Q! m FALSE) == TRUE)& q' `# N/ f9 X) }* @ {4 @5 @4 k( a4 q8 m. f" ? s" l printf("command 'w' writed to board\n"); ) ^5 B5 G9 M+ q" N' J printf("now press any key to write datas to ram\n"); % \: x7 P$ e# @1 Y' _6 n getch(); 1 ]: t, \3 M- w8 i } ; `$ P8 ~: s* G' [$ U R- b else! S U s% q3 [$ E* ? printf("data can't write to device\n");

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

    printf(" ");% Z) ^4 F: O3 M1 y% z6 d for(VertAddr=0;VertAddr<=0xf;VertAddr++) 9 P1 t @* T4 C q1 M9 r printf("%02x ",VertAddr); 5 S1 V7 r0 Z+ D) {- }; g6 L& l printf("\n");3 O2 F1 a9 i6 G6 f* N9 s addr=0; : |; Y# t) a' { while (addr<TotalLen) + v% i5 ] a7 G" R# p5 g3 q9 d* | {) l S9 S! p4 y2 f+ K3 \ if (addr+hDataLength > TotalLen) ( C# R. ]! }4 V9 Q. V* \1 ~ hDataLength = TotalLen-addr;! C& p& W: R0 U. p for(i=0;i<hDataLength;i++) & J2 O/ D3 e7 A3 { { / b' R2 E# J4 l* z) L hDataBuffer=ch1++;4 u3 {) _0 T4 I d8 m if (ch1 > 0x80) " H7 e% x1 o" k, @9 d( U5 X ch1 = 0x61; ( h/ |, `/ i+ m# O }( {/ n9 m8 A F! ?, O+ G+ L6 d) b /* call hUSBIO to write datas to write pipe3, which - V/ O' J) h. A. a) L9 [0 d/ ]" G is endoint 6 of HW9911*/

    if ( hUSBIO( &hDeviceHandle,( A% S+ I7 Z" m% V3 L* M6 z hDataBuffer,, t! _" M! e% Z; V; M8 ^/ N' Q2 } hDataLength,; Y- g. N7 b+ j; W, ] hWritePipe3, ( s2 ?5 b& j/ H# J% M! c. H FALSE) == TRUE) //FALSE means Write operate- F6 @9 n% h$ p3 x% }. ^ { 8 a1 J" k& l. J) @/ R( v7 }6 } for(i=0;i<hDataLength;i++) ' t- [' h0 T' b. r { 6 A3 t( R5 B: F. `7 T0 X9 U' V! d/* print format control */ ' w' G9 K! J3 j' D A& S1 E2 `' e if(i % 16 == 0) & ]2 O/ c' E" @$ Q0 O6 E { 5 C6 e- g, Z' S printf("\n%04x ",HorAddr); 7 i$ K: F; e+ v, E6 A+ u: p& V4 [1 \ HorAddr=HorAddr+16; ! \9 ]3 v6 b- v0 f H" N }7 | a1 K0 V' e- Z printf("%02x ",(USC)hDataBuffer);* Y8 Z+ X" Y+ |3 p }4 S% m. U8 j$ L addr=addr+hDataLength; ; @+ D f/ M3 [0 y }# a) I% m% N! m3 r else4 U( G8 t8 r2 V `: U2 K& ?% ^) H {: f/ B: m$ H' c. r. U0 a- ] printf("can't write to board\n");& Y0 Y! d4 Z2 V5 v+ ? exit(0);6 V- A, Z1 j# M6 c } 2 E8 @1 ^, E0 T3 o& Z3 `5 R! m. p } * z6 K0 Z; b4 N& \$ _9 N printf("\n\nTotal%x bytes write to ram OK\n\n",TotalLen);

    i( K& t; ?+ A8 c* l+ F+ u, B 7 U( m9 y7 S" k' h) R Top 4 d3 P% J. m2 g4 G7 q : e6 r& e( _3 Y- E" p+ u2 x 回复人: HUANG_JH(保卫钓鱼岛) ( ) 信誉:115 2003-12-17 9:50:51 得分:0 + B8 c: L( e& e4 v: u! M ( U! n& s6 N' K" m 4 w1 F& K: h2 R, i* i' ]$ q. H

    /*****************************************************************& U0 q4 i) m5 P now will build a read command packet + ~: ]$ ^* C0 H# u with the first byte is 'R'. 0 y" a0 S4 J+ g* d: q; d; D and the following bytes are: & `8 e) t7 u' V# x! k6 I. r: Q) t0 _ start ram address byte high, start ram address byte low, ( w6 i/ L. q1 s: k" b# t3 W datalength byte high, data length byte low. 1 r- D9 g4 S/ \$ ]6 Q# _# a this packet will send to device through WritePipe1, % D5 e: @! U. d which is endpoint 2 of HW9911. % l# [5 p6 R" @% _% J1 J7 S when the device receive this command packet, ! _! {1 h" I) f8 C3 t" L( f8 N it will read TotalLen bytes data from Ram on the board' J- H2 y* W" Q1 Y ******************************************************************/

    printf("************************************************\n"); ; N2 y* W0 V, o' k' S printf("now program will read datas from ram on board\n");& m- q+ ^; k1 h9 Z printf("total bytes of datas is %x\n",TotalLen);& F( _; q4 g m printf("press any key to continue\n\n");3 G9 R7 \! F& Q5 B' [# o7 b1 y7 y getch();# ?& Y2 h0 p+ \. T4 r5 t# o hDataLength=64;6 `. t' A3 q a8 W9 @! v hCommandBuffer[0] = 'r'; //read command6 l5 G+ E, W* J. c% j% G hCommandBuffer[1] = StAddrH; 4 h1 O2 d6 t* z$ S* ^$ X9 Q hCommandBuffer[2] = StAddrL; ( l6 P% d+ J, o hCommandBuffer[3] = DataLenH;5 \& [1 a% g$ c2 p5 K hCommandBuffer[4] = DataLenL; i! v* B2 U; @/* call hUSBIO to send packet */& \4 K! G% _0 `9 d; f; O; Y if ( hUSBIO( &hDeviceHandle,& G- D, S: R6 r3 A hCommandBuffer,, I: y* m% q& s% b hCommandLength, / u% P( \3 M6 y hWritePipe1, * P/ n' N4 p/ Z* _& _3 R FALSE) == TRUE) / W9 ?$ X8 ?+ a: w) o4 s { ; o. u# s. U: `5 H printf("command 'r' writed to board\n");! @# ^( K# C0 y printf("now press any key to read datas from ram\n\n");9 T& P# i* `# Z( z2 t+ b- R C# _ getch();3 c8 @& s& _) R- h9 m* A }% K4 U! B% b& B3 e9 C- I% ~ else 0 F; B" q% y3 L4 j1 Z/ Q3 ~& H printf("data can't write to device\n");

    /******** read ram data form board **********/+ @& ^8 T6 V- I! u printf(" "); ( a" P; v" k# X( l6 c for(VertAddr=0;VertAddr<=0xf;VertAddr++) 0 |7 _4 H2 B) P' F printf("%02x ",VertAddr);6 C6 ^* J1 f' P; Q( e% W printf("\n"); * {8 h1 t0 x' Q addr=0;' _1 y3 O+ m- I$ w HorAddr=0;( I* k$ V' N% Q: s0 ` while (addr<TotalLen)& G. ]6 R R8 U. r { 8 A$ y: O' z# G/ W5 y: ~* E if (addr+hDataLength > TotalLen)5 {+ z# }) e$ X1 x, R2 ?6 O hDataLength = TotalLen-addr; / E: r/ [- g' n \7 ~4 v6 m/* call hUSBIO to read datas from board */# Y, o' ~+ Y1 j3 ^! j+ ] if ( hUSBIO( &hDeviceHandle,2 h5 j0 @2 A/ @/ k' Z hDataBuffer,8 ?) D: I0 f/ G( Z0 L! U4 g+ L hDataLength, # i& t& I" s- Q' M/ |% M hReadPipe3, 9 M6 A1 p& z7 l+ B8 x3 |# l* R& c TRUE) == TRUE) //TRUE means Read Operate; \ \( l, C+ H- [! M ` { , P! U; }! k3 ]. o- J& s" z for(i=0;i<hDataLength;i++) 5 r% s1 z+ U, ?5 q# j9 y3 A' g+ Z {9 q2 }3 @0 V$ m% U /* print format control */ 6 h+ l3 S8 c1 I* x if(i % 16 == 0) ; H$ W- M" `$ m$ a6 J9 B: x { 8 o4 j0 ?2 s$ g& f) A0 T, @ printf("\n%04x ",HorAddr);) d1 a% z/ L* \1 I1 T0 J0 Z HorAddr=HorAddr+16; 9 j4 u& \: {4 J1 m" x6 } }, S. o' I5 E v: I4 R/ i printf("%02x ",(USC)hDataBuffer); , |' Q6 C! E1 b% M) @+ \" i- Z }5 ]6 O; D1 X2 u m5 Z addr=addr+hDataLength;/ f5 e I( S: ^/ G/ o } ( l! f/ e2 v6 Y' S# o else ; e. @6 [# L" v {) M8 J4 T$ \1 V% l4 m& |) q' } printf("can't read from board\n"); % `5 m7 \$ Y. T- [ exit(0);, |; I& B; s7 v4 r9 N } ) {0 e/ u0 j( Q( D+ s } 0 P( \6 V( s5 C* B( ~ printf("\n\n");3 i% ]0 V6 F7 s& F' [/ B printf("%x bytes read from ram OK\n\n",TotalLen);

    /*****************************************************/ / z& K/ c: b# U% X5 n6 C/* process rs232 test */8 B4 ^( P% r( Y7 v x. e2 s8 D /* the first byte in this packet is command 's' */ - r6 D3 M& `! }: |$ ?) x3 f! _7 H/* and the following 2 bytes are used to set */+ ~- V! U H" P6 R# N /* the baud rate of 8051 */' O S- U- a- P+ H1 G0 Z" _6 Z /* they will be write to TH1 and TL1 respectively*/( C. e& e2 p% h! E+ N. U /* the following bytes are datas will be */ ( l: B/ [; X/ Q9 Z# @& Q0 M, y/* send through RS232 serial poart */( F [, w& W+ m* X& N) m7 f! @/ { /*****************************************************/ ; ` o2 x3 z+ Z) H9 T, q0 f3 I printf("\npress any key to process RS232 Test\n");7 k+ G+ m ~ A getch(); / T( o# t3 Q2 c1 P7 Z( q . n/ i6 @1 g) m0 x7 z( h# S USC TH1,TL1;% y- G0 O" C( {* E! K# S v char hStr[30]; 8 W$ ~) \, H. n TH1=(USC)(BD9600/0x100); P" m5 o0 ?* o3 g8 p/ O1 Z( g TL1=(USC)(BD9600%0x100);4 h5 S& ^1 x @. G0 Z" r% N5 a hCommandBuffer[0] = 's'; //read command & y& r! F! `4 F( i. K5 O$ k hCommandBuffer[1] = TH1; " x2 D2 B# w* S# r ?. {# a hCommandBuffer[2] = TL1; //start address is 0x0000

    strcpy(hStr, "Hi, dear HW9911 consumers! "); % q: y( R$ P, I5 l printf("Hi, dear HW9911 consumers! ");7 g8 C4 g- _7 g Y( m3 U memcpy(&(hCommandBuffer[3]),hStr,27);

    if ( hUSBIO( &hDeviceHandle, 1 T% K/ v# C/ N2 K. S$ }. k/ v hCommandBuffer,; b! l0 u3 O; { 30, i6 R+ V4 P! y5 \% L/ K hWritePipe1,( N1 P8 t3 ]/ J# w4 e FALSE) == FALSE) T- Z! j N | F6 U {7 I$ r6 i, H5 n8 G3 w* v printf("can't write datas to RS232\n"); D& y; o7 [/ o, D( b$ X# f- F8 \ exit(0); ' G! O0 q2 h4 k0 ~ }

    strcpy(hStr, "I'm HW9911 Evaluation Board, "); * m. \* `; g" c- b printf("I'm HW9911 Evaluation Board, ");( {, F( s4 ]- [$ F/ U' g memcpy(&(hCommandBuffer[3]),hStr,29); ! W8 Z9 h0 e% E" X2 n0 @ ; B9 d* a( Q/ ] if ( hUSBIO( &hDeviceHandle, / S) N& w0 J7 D hCommandBuffer, 4 s4 v5 K4 {) V; z2 N 32,/ Q. _' h/ t( S# k hWritePipe1, % j1 q! W8 f) x9 n2 s6 g& B- ^$ T FALSE) == FALSE) ( ~" R, H% J. \: i( r( } { 2 O; @! b) I+ y! B% { ?; D( R printf("can't write datas to RS232\n"); 6 j$ j; M( Z9 @' u4 y+ R9 Z exit(0);1 x- M0 U L: r" \* P# T- W }

    strcpy(hStr, "thanks for purchasing me, "); % v% j9 H$ z5 H& ^& a printf("thanks for purchasing me, "); 5 Y( I: r( ~5 d( L8 l" U2 T1 H [+ O memcpy(&(hCommandBuffer[3]),hStr,26); . |: Y- g8 ]0 p1 h+ B $ F* w4 p4 f% U B. h if ( hUSBIO( &hDeviceHandle, ( I# L# D- o- y2 e! I hCommandBuffer, ! }2 O) w( [" E2 _ 29, 4 s( N7 C& r# Q+ L, z! a) ? hWritePipe1,. c3 i. n; q( J t w- F' l FALSE) == FALSE)% h7 h1 T0 S; Z$ ?6 p- [5 r3 ^7 E6 b0 R { 0 |, Q$ p+ c4 z y6 ~; p printf("can't write datas to RS232\n");8 l$ J2 d9 c1 \# X9 r6 n0 _1 }, e/ u exit(0); - P" t% x5 `3 j$ v; @. C }6 o$ N# V: d$ P& |0 B4 x; [ ) j% g2 l0 n, Q9 V8 p' U9 h& l- k strcpy(hStr, "If you meet some problems, ");+ C5 V u' f: T/ M% l4 k printf(hStr, "If you meet some problems, ");; W' k# X1 `4 T" C( u memcpy(&(hCommandBuffer[3]),hStr,27); # z( c% Z2 c K ! W; g5 j2 j& J `) j8 T if ( hUSBIO( &hDeviceHandle, 1 `0 o" b5 |, i6 C hCommandBuffer, * A, e; @. M; }1 F# H" D 30,: ?( J8 g: t6 x1 |6 ~ hWritePipe1,: @/ I R* ^% U C6 [ FALSE) == FALSE) 5 }! q3 t; m( e8 P6 [* q {6 ]9 ?. r: Q4 m1 Y- s: [1 ^ printf("can't write datas to RS232\n"); % V- A2 X: n8 Y2 K! C exit(0); ' s/ M9 ]& C4 w7 ~9 ]1 _ }

    strcpy(hStr, "pls contact my designer ");5 |( g2 m4 {3 X printf("pls contact my designer ");9 R, m1 Z' s/ m- I1 B9 b memcpy(&(hCommandBuffer[3]),hStr,24); 1 Z* k4 g; B( s! N2 j }" E$ w, v8 S9 E. Z if ( hUSBIO( &hDeviceHandle,$ K0 M8 G# \# Q+ @$ U4 j; G8 o hCommandBuffer,) J9 A3 p |" A4 b' a, U 27,' ~, Q. `8 b$ T! H hWritePipe1, $ ?; H; f3 H* k6 W% i6 ^! m FALSE) == FALSE) 5 n+ X% ^5 f6 G. h( W5 D {! {7 ^5 e) d8 q$ J7 `3 b2 b printf("can't write datas to RS232\n"); & [: k- p0 C: F2 C$ l+ {* S exit(0);5 p: `$ Y, ^1 M; e8 ~ }

    strcpy(hStr, "by email: hugehard@263.net."); 3 @, [3 [4 m$ U8 ] o" } printf("by email: hugehard@263.net.\n");+ e- E$ R- F0 y/ R p8 _, G3 A memcpy(&(hCommandBuffer[3]),hStr,27); ) T: q! {! K! b; W/ X' s ) |; r. e, k; Y% m if ( hUSBIO( &hDeviceHandle, . f: }# W5 c3 _' o, ] hCommandBuffer,2 z, ^) w+ i, ?; @ 30,, J( R% |& j( B+ W2 W hWritePipe1,7 h( c. ]1 U' Q; J9 m8 w H5 ~ FALSE) == FALSE); V7 |- N+ ^/ f0 T# P6 P1 Y {" Y3 Q- h$ T# U) l! @/ F( S printf("can't write datas to RS232\n"); ) W L, \4 h6 @# J* B* a exit(0); % x6 c8 a s _* J. _! N0 s } 6 ~( M* _' U" x/********* call hDeviceOpen in hwdll.dll to open the board***/1 i3 r0 |) _% n6 j // hCloseDevice 说明:4 ^1 z4 p0 ?9 G$ U9 S+ ~6 o, A, n // BOOL hCloseDevice(HANDLE *DeviceHandle) & _1 h' @$ q4 c0 A6 k) g// 作用:关闭设备 * T$ `5 f) }3 v// 参数说明:- M7 q8 U3 d5 D! W5 J; | // DeviceHandle:设备句柄0 m- v3 t; }3 D: C // 返回值: - C3 R5 H& ?) t// 设备关闭成功返回 TRUE,失败则返回FALSE 0 M5 x1 P, v/ A: L' Y8 f3 }# P if( (hOpen = hCloseDevice( &hDeviceHandle ))==FALSE) ; N) T a, N7 d0 B { 7 A5 M$ i* \: b9 a+ G( N5 C printf("can't open device\n");( v2 |0 n; O8 ]7 c g) a! @: n, l- O printf("press any key to exit\n");4 t5 g' {+ `8 N/ R8 b+ N getch(); ) m: g) i/ H% u' P- }- ` return 0;/ l* J2 W' |0 n' ~( N } 2 \+ Y: F+ m( u8 R% K1 X else ; F* Y. F. Q! O5 C printf("device closed\n");

    printf("press any key to exit the program\n"); 9 I+ C! {0 j( h& M2 } free(hDataBuffer);- R! k2 W- f& Y) a) i$ C0 J" t free(hCommandBuffer);- q9 o, |. B0 o4 n/ {- m, S) N getch();( U4 J8 |( x3 S; T return 0;( }" b; n+ I" W! |9 B8 k+ |# I& [! o }

    - v+ W0 i! |2 O - K) k, k v0 d % O2 J1 j9 `. H9 XTop $ l7 D! `* ~1 H9 o3 Y0 ^: s; ?$ W" B / _' `& n/ [+ A* Z- c3 I 回复人: aiyu33() ( ) 信誉:100 2003-12-17 11:41:24 得分:0 4 \/ b" {6 m" ]/ W% ^9 H : d6 G! \5 b1 u , O! O$ `# P5 F" m$ d) ` 5 L1 L6 b( F0 R3 Oupupupupupupup

    + S% i: ~( ~( I8 W L+ v # P: X9 Q+ y# S9 p5 K( @3 o% T Top ; f$ `6 m- q% E2 K! A+ D * ^* f6 G- c K3 r- V9 p1 i1 I 回复人: kingcaiyao(AKing) ( ) 信誉:110 2003-12-17 12:53:39 得分:0 + M4 ?* X, z# j) J: i3 k : q3 `" a8 X$ L# H* B. c 3 O. y/ n5 g* x 8 R! q" ^& v9 n% G2 w你开发的这种软件类似于Palm Desktop Software,负责Pocket与PC之间通讯,我建议你最好先写一个驱动,将USB口虚拟成一个串口,然后直接对串口操作会很方便的。我现在做的程序可能和你相似是一个CDMA模块,通过USB口与PC机连接,然后由驱动程序将它虚拟成一个串口,我的工作就是和这个虚拟的串口通讯。

    J5 ] Y: v a $ L8 y7 |! u$ ~2 x6 ~" {Top + z6 \/ ]! b) y- G; e6 D( z ' z# E3 P" l' `6 w" m0 q8 M% v: l 回复人: kingcaiyao(AKing) ( ) 信誉:110 2003-12-17 12:56:27 得分:0 ?2 c' W; @ `6 P. p / ^+ r R1 `# L$ Q0 W' v4 r6 q 8 w2 P" m1 x$ k / w e+ [3 a- q1 ZPocket与PC连接肯定有驱动的,如果驱动程序没有将Pocket虚拟成一个串口,你也可以直接通过设备GUID和设备序列号进行访问,详情你参见我专栏上的一篇文章。当然了,通过虚拟串口来访问设备肯定要方便,简单些。

    k7 o/ a/ y v+ Q6 G5 E 8 ~% K0 U& [2 G) k& F) GTop 5 j' [$ V v+ i$ n$ A ~* w2 \4 g# i1 R c 回复人: aiyu33() ( ) 信誉:100 2003-12-17 13:31:08 得分:0 ; \0 L6 Z: `7 F; E! T 4 ~ C$ I. |1 E ( s" R ]) v6 y3 I 6 S5 t+ f# H% \: `" `9 P, h我得这款pocketpc默认只支持使用usb与pc相连的,而且activesync3.7就是使用usb传输数据的。如果我自己写驱动的话,不仅不熟悉而且很可能activesync3.7这个软件就使用不了。我只需要利用它的驱动。你的专栏上的那篇文章我也看了,我就是模仿你的写的代码,但就是到createfile这步就不行了,我的同事是用palm开发类似的程序,也是到这步就行不通了,是不是有其他的原因?( H y& C# T7 h3 N 我还想问问如果驱动程序将pocket虚拟成串口,如何查看它的符号名呢?

    ( ]' K9 F! H3 y / M8 }' w" M& M0 u G m9 I1 ]8 F" J8 N# k9 dTop + z0 Z, q( _( t% I 4 k' _, |, O& j0 T4 Q" U* u 回复人: kingcaiyao(AKing) ( ) 信誉:110 2003-12-17 16:53:17 得分:0 " h. ~+ h; ]* S* P" E ( Y9 m8 U" A9 l4 b6 ?) i 0 {4 u$ L4 H( f" a7 X2 x: A 0 \/ Z6 @! ~$ ~* q3 D 假如将一个USB设备虚拟成串口的话,那么它的符号名可能是COM3,COM4,或COMn,这根据你当前PC机的配置而定 。它的符号名位于注册表中HKEY_LOCAL_MACHINE\CurrentControlSet中,你可以搜索注册表,另外在2000或以上的操作系统中,你可以到HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SerialComm中看到。

    * n9 D- Q% Z7 O4 q1 i3 z " V( Y, ^2 k0 s: \( q# q Top ( Q1 u) n6 K8 L $ Y: p v3 a$ Z 回复人: kingcaiyao(AKing) ( ) 信誉:110 2003-12-17 16:55:33 得分:0 * `8 L" q' X. }7 ^6 P . i; a( i; q \5 H ; }+ `; c0 |! R$ h2 h6 _# [ $ ~2 v: q; u5 ~ K9 c6 d( m" w3 w我以前在一张贴子中详细回答了如何利用设备序列号和设备GUID来访问该设备,你可以搜索一下CSDN。你所说的CreateFile不能打通设备,你要查一下,你的符号名是否正确,包括设备序列号和设备GUID是否正确,设备GUID你可以从驱动程序的安装向导文件.inf中找到,设备序列号则需要你到注册表中去找。

    - \3 w2 d- p, ?% Y+ X - N( q- J8 z8 w6 [7 A& ETop 4 x7 w9 K% m% l" e " Z% }4 P0 I3 C' Q: U, Z 回复人: gyj_china(透明) ( ) 信誉:98 2003-12-17 18:15:30 得分:90 , Q- J& a' J4 P% c & R o, S, w. H/ R4 i + t v0 X2 I& }; o: w & j% I$ Y1 S+ H# m' `% C7 k 没有星星不敢发言:(

    9 P4 M' k2 P* e* v6 w$ | / O. Z# l1 ?6 x; S% q* `8 qTop . @0 z. Q5 T- ^! d0 `# i8 O 2 M7 g$ o8 ], T4 I 回复人: aiyu33() ( ) 信誉:100 2003-12-19 18:27:28 得分:0 1 I2 q0 _/ K' X 7 i+ ? f: M9 R; ] ' P$ `+ k0 D# n" \% G 2 k' A- q. X' h' D/ U不好意思,是因为ActiveSync3.7一直在系统服务程序中运行,占用了驱动程序,所以不能打开设备。我删除了ActiveSync3.7后就可以了。

    回复

    使用道具 举报

    kenneth        

    10

    主题

    1

    听众

    98

    积分

    升级  97.89%

    该用户从未签到

    新人进步奖

    回复

    使用道具 举报

    10

    主题

    3

    听众

    33

    积分

    升级  29.47%

    该用户从未签到

    回复

    使用道具 举报

    arvinlai        

    5

    主题

    2

    听众

    65

    积分

    升级  63.16%

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

    [LV.4]偶尔看看III

    群组Matlab讨论组

    回复

    使用道具 举报

    arvinlai        

    5

    主题

    2

    听众

    65

    积分

    升级  63.16%

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

    [LV.4]偶尔看看III

    群组Matlab讨论组

    回复

    使用道具 举报

    0

    主题

    3

    听众

    10

    积分

    升级  5.26%

    该用户从未签到

    群组2011年第一期数学建模

    回复

    使用道具 举报

    0

    主题

    4

    听众

    43

    积分

    升级  40%

    该用户从未签到

    回复

    使用道具 举报

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

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

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

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

    蒙公网安备 15010502000194号

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

    GMT+8, 2026-9-1 16:26 , Processed in 0.349374 second(s), 99 queries .

    回顶部