QQ登录

只需要一步,快速开始

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

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

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

10

主题

1

听众

98

积分

升级  97.89%

该用户从未签到

新人进步奖

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

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

9 Y; Q6 L) _ ]( j& R8 i5 x: v

我暈,看來這回死定了

2 n' D1 S( G0 W4 M+ B

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

2 i6 F+ K6 {; z: Y& X) Q+ ~ D% n

老大救命哦

[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之打印函数:$ i# I5 e9 j+ Z) f AbortDoc 取消一份文档的打印 * p0 k) I% Q, B( J! A9 MAbortPrinter 删除与一台打印机关联在一起的缓冲文件 . ~+ \6 _- ^5 UAddForm 为打印机的表单列表添加一个新表单 ( p% u5 F* g! D0 W$ u& k9 n. B AddJob 用于获取一个有效的路径名,以便用它为作业创建一个后台打印文件。它也会为作业分配一个作业编号 & L0 l, L( z6 JAddMonitor 为系统添加一个打印机监视器 + G/ l8 n, s% y1 l) `- D' u) mAddPort 启动“添加端口”对话框,允许用户在系统可用端口列表中加入一个新端口 " C/ j) q# M! u f, H+ a! |AddPrinter 在系统中添加一台新打印机 . x, I4 @5 N! I AddPrinterConnection 连接指定的打印机 1 J& O1 U5 Q! C: Q AddPrinterDriver 为指定的系统添加一个打印驱动程序 6 [( |% _! K0 @6 A3 ]. { AddPrintProcessor 为指定的系统添加一个打印处理器 ) m$ Z0 \) k* f- F* Y( |9 o AddPrintProvidor 为系统添加一个打印供应商 2 |. g6 G3 i6 g0 S; u8 s AdvancedDocumentProperties 启动打印机文档设置对话框 . g- j2 _' q/ e0 |; O2 [ClosePrinter 关闭一个打开的打印机对象 # o% x* M6 c m) d: v7 M$ q! ^ ConfigurePort 针对指定的端口,启动一个端口配置对话框 / Z7 U8 O5 Q8 i+ o: K4 hConnectToPrinterDlg 启动连接打印机对话框,用它同访问网络的打印机连接 ' a' J9 j, r S2 B DeleteForm 从打印机可用表单列表中删除一个表单 $ U7 s5 R5 T! h% [. n) e* _" A6 y DeleteMonitor 删除指定的打印监视器 h6 H, t. y9 \. t! N# M DeletePort 启动“删除端口”对话框,允许用户从当前系统删除一个端口 6 y& r# P# M' f7 z, Z; x DeletePrinter 将指定的打印机标志为从系统中删除 n2 j9 I, c ~: ]& J: l* m DeletePrinterConnection 删除与指定打印机的连接 ( C3 I" w: g7 h! I, h5 z" m! a8 C3 lDeletePrinterDriver 从系统删除一个打印机驱动程序 & F |" G+ Z; y8 N DeletePrintProcessor 从指定系统删除一个打印处理器 7 n! ]9 I7 h* `. P. U DeletePrintProvidor 从系统中删除一个打印供应商 % H/ [0 L- B- M" M1 i1 i8 V: CDeviceCapabilities 利用这个函数可获得与一个设备的能力有关的信息 . B( G% z5 g2 B$ _$ d+ F! TDocumentProperties 打印机配置控制函数 8 N- _" k5 |% r+ c1 B* B. ?3 G- }+ xEndDocAPI 结束一个成功的打印作业 ' D! _1 q' D$ X+ `2 J6 ~7 iEndDocPrinter 在后台打印程序的级别指定一个文档的结束 ) m8 e' V) i z' C$ Y# a) z- O EndPage 用这个函数完成一个页面的打印,并准备设备场景,以便打印下一个页 6 m7 E$ w$ V8 G! i" J$ XEndPagePrinter 指定一个页在打印作业中的结尾 , q0 \3 f; ?) cEnumForms 枚举一台打印机可用的表单 8 Q+ Z! q% N- X8 Q6 G: T EnumJobs 枚举打印队列中的作业 M% D& D& W6 t1 g EnumMonitors 枚举可用的打印监视器 / l t8 L1 k) G3 |$ B EnumPorts 枚举一个系统可用的端口 A1 J) f* K2 [( M EnumPrinterDrivers 枚举指定系统中已安装的打印机驱动程序 8 G9 M0 t& i ~4 }, Z1 KEnumPrinters 枚举系统中安装的打印机 / R7 @; u3 T5 n. MEnumPrintProcessorDatatypes 枚举由一个打印处理器支持的数据类型 M# O3 ~ @6 N" s$ a6 EEnumPrintProcessors 枚举系统中可用的打印处理器 $ ?# _ Z7 l# }3 O9 S& n% }Escape 设备控制函数 ! ^$ W+ K6 y3 ]9 ~ p1 qFindClosePrinterChangeNotification 关闭用FindFirstPrinterChangeNotification函数获取的一个打印机通告对象 : X9 M! M8 S/ n3 W8 t6 I7 UFindFirstPrinterChangeNotification 创建一个新的改变通告对象,以便我们注意打印机状态的各种变化 8 ?+ }" o, [( b7 C1 oFindNextPrinterChangeNotification 用这个函数判断触发一次打印机改变通告信号的原因 $ e% l/ U/ K( ^$ V' j FreePrinterNotifyInfo 释放由FindNextPrinterChangeNotification函数分配的一个缓冲区 5 k2 Q/ B$ e5 ~# _ GetForm 取得与指定表单有关的信息 4 C; [; U& J" N3 k: f0 U' uGetJob 获取与指定作业有关的信息 7 W2 z+ D7 X% t$ Q/ p8 H" JGetPrinter 取得与指定打印机有关的信息 ; [5 S' p* [# P8 Q0 A7 }5 xGetPrinterData 为打印机设置注册表配置信息 8 q% }9 Z9 ?# dGetPrinterDriver 针对指定的打印机,获取与打印机驱动程序有关的信息 1 _+ ]8 T! o/ |: n3 I/ H& c$ @% TGetPrinterDriverDirectory 判断指定系统中包含了打印机驱动程序的目录是什么 ' W7 `* I1 W, i9 i: B8 yGetPrintProcessorDirectory 判断指定系统中包含了打印机处理器驱动程序及文件的目录 ' a( S" p) w- o. ?3 ^/ R OpenPrinter 打开指定的打印机,并获取打印机的句柄 - x. d' ^. a+ `: M- K PrinterMessageBox 在拥有指定打印作业的系统上显示一个打印机出错消息框 % P9 U7 M0 v" b: |/ b9 v PrinterProperties 启动打印机属性对话框,以便对打印机进行配置 : ]& ^, Y; o- T$ x, w3 ]6 @ ReadPrinter 从打印机读入数据 ( ?, B8 h" z" m2 |# y2 h/ jResetDC 重设一个设备场景 * A6 M) J p9 E3 LResetPrinter 改变指定打印机的默认数据类型及文档设置 5 |( _! ?3 ^+ d: Z& l0 | ScheduleJob 提交一个要打印的作业 ( Y. b2 ^+ t+ A0 d SetAbortProc 为Windows指定取消函数的地址 : Y! d9 j; V% `% t) C0 mSetForm 为指定的表单设置信息 9 J" {. [ ]; _1 e3 q8 L. _ \/ M SetJob 对一个打印作业的状态进行控制 3 j& v* Q5 C* D* ^* X* d SetPrinter 对一台打印机的状态进行控制 * M% q' S3 s: }$ q z0 b5 }' ` SetPrinterData 设置打印机的注册表配置信息 , G. K8 R0 ?; F' }, G& f+ T" v/ b- \StartDoc 开始一个打印作业 " q* W$ t6 T) H3 o3 G' j' g StartDocPrinter 在后台打印的级别启动一个新文档 0 m8 j) z7 p4 h* R" F1 V/ tStartPage 打印一个新页前要先调用这个函数 $ O* \( m& k7 [! ?: b7 Q) E T/ B StartPagePrinter 在打印作业中指定一个新页的开始 " w2 d/ t: I- |4 o) kWritePrinter 将发送目录中的数据写入打印机 e; B- C9 O: G

    回复

    使用道具 举报

    ilikenba 实名认证       

    1万

    主题

    49

    听众

    2万

    积分

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

    [LV.10]以坛为家III

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

    群组万里江山

    群组sas讨论小组

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

    群组C 语言讨论组

    群组Matlab讨论组

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

    主  题: 关于usb通讯方面的问题。请AKing大哥及相关高手来看看,万分感激!!! , R4 C* b7 O1 X5 F6 V$ q 作  者: aiyu33 () 9 H4 p+ P1 V' d1 o# u" a" w# V等  级: 2 H, R" |, k; D' h/ s3 D 信 誉 值: 100 # `* x9 x5 f; {3 L, J; P, ~所属论坛: C++ Builder Windows SDK/API ' r! @8 \% Q% o, r# O( n 问题点数: 100 % |; C1 K" |; @7 M1 e9 ]6 Q7 ^回复次数: 12 ) V! C& v- G# c9 x9 r0 g# ? 发表时间: 2003-12-16 20:43:13 4 N* g, G2 Q$ U+ S - x2 y# ^& j! o7 f+ T 4 K/ @* x6 N$ L( N7 b2 l- y

    最今我接到了开发pc和pocket pc通过usb口通讯的任务。这两个星期我参考了很多方面的资料,特别是AKing大哥写的一些文章。但我始终没有打通这个关口,我贴出我的代码请AKing大哥看看,现在很急,多谢。; D; j' Q" A/ V- u( y' _- X0 N pc的os是windows2000professional, a ~) [7 \% [) P; W1 r0 ~4 e pocket pc是hp ipaq 2210,os 是pocket pc2003。 # x4 l' U5 i- w+ T7 j我装了activesync3.7。我查看过了,这个activesync目录下有pocket pc的驱动程序。pc也能识别。/ f' y% M3 W" \2 K 下面是我在pc上调用usb的代码。 3 W* c2 Y6 J- o: Y* G3 S下面的代码我能打开hidn类型的usb,但是就是不能打开pocket pc的usb。6 ~' A% A9 Q" Y1 U0 c/ S7 T: i //classGuid = {25dbce51-6c8f-4a72-8a6d-b54c2b4fc835}/ `" [8 t! e# O% j1 y7 z DEFINE_GUID(GUID_CLASS_PALM, : g) r/ O3 U; o2 V/ h 0x25dbce51, 0x6c8f, 0x4a72, 0x8a, 0x6d, 0xb5, 0x4c, 0x2b, & M; {# p+ z& W6 X4 {$ j( @ 0x4f, 0xc8, 0x35);% i* }2 p1 M$ {$ i& L GUID HidGuid = GUID_CLASS_PALM; / c# v$ E3 u, N, P4 iHANDLE Get_DeviceHandle( GUID* pGuid)% K2 S, r9 a9 j0 D$ G) [ { : v8 @% @" _. h ) s# Q* ]3 m$ ] HDEVINFO info = SetupDiGetClassDevs(pGuid, NULL, NULL, DIGCF_PRESENT | DIGCF_INTERFACEDEVICE);2 n& ?' T6 U0 \ 5 ^& m& i1 e _* |6 h! l) y if(info==INVALID_HANDLE_VALUE)- g, A+ \2 u- Q2 b8 n& b { 5 F5 ^5 H# M0 n4 O printf("No HDEVINFO available for this GUID\n"); 5 h! R" Q$ n) _* C3 { return NULL; i( s. h/ X6 |( t3 M% v' `5 | }5 Z# n. Q. Y1 S: m# F# v6 i SP_INTERFACE_DEVICE_DATA ifdata; 4 B7 n2 E# k+ M5 @4 e, ?5 P ifdata.cbSize = sizeof(ifdata); - V$ }0 a. e0 b4 q' L//0000是我在注册表中找到的序号 9 W" N0 D5 a$ R! Y {5 ~& W if(!SetupDiEnumDeviceInterfaces(info, NULL, pGuid, 0000, &ifdata))8 \7 W& m- m, G. d w" w: f2 Q$ S4 M; a% L {8 b: {) k3 S: e& p6 Z7 O printf("No SP_INTERFACE_DEVICE_DATA available for this GUID instance %d \n", instance+1);1 x3 G" H9 D, F) ] U% } SetupDiDestroyDeviceInfoList(info); " S: n. u8 j' t, X, y% A return NULL; ( G/ v3 h. L. C/ o* [ }

    // Get size of symbolic link name 4 G: ^1 x6 L/ m7 f( ]& V2 ` DWORD ReqLen; A4 |+ H. C- G" W3 s * H' ?. J& q' _! s# Z, m SetupDiGetDeviceInterfaceDetail(info, &ifdata, NULL, 0, &ReqLen, NULL); 3 ]( }+ d5 d( i4 F ) @1 T5 u0 C" Q" ^# \( ~; M. s PSP_INTERFACE_DEVICE_DETAIL_DATA ifDetail = (PSP_INTERFACE_DEVICE_DETAIL_DATA)(new char[ReqLen]);, B. X5 j7 P; \4 x # f# q6 _2 G& h: f. _2 u7 e, |. } if( ifDetail==NULL)3 \ h% a% n& n% F {! {/ S3 p. c! f( W4 Y9 m SetupDiDestroyDeviceInfoList(info); ' l3 v8 N* L& t return NULL;+ y) D- X/ I- ]& r! ]# B }

    // Get symbolic link name W8 F+ \0 E# j9 S2 X3 p# |% ~6 p! h ifDetail->cbSize = sizeof(SP_INTERFACE_DEVICE_DETAIL_DATA); j0 `4 ] W. } 0 O' }- ^( I. v7 J) w' c3 o d if( !SetupDiGetDeviceInterfaceDetail(info, &ifdata, ifDetail, ReqLen, NULL, NULL))/ i6 k0 h. m1 N G+ z { ; f1 T! O" Y+ B2 w' c SetupDiDestroyDeviceInfoList(info); $ |1 t2 @: K6 |; \! q delete ifDetail; $ ~% [* A! |6 ^# a; O* ^5 d [4 E return NULL; 5 h; a8 z0 t+ v, C }

    printf("Symbolic link is %s\n",ifDetail->DevicePath);) F* z! r, v6 j# @

    /*\\?\\usb#vid_03f0&pid_1016#5&1bc41f6c&0&1#{25DBCE51-6C8F-4A72-8A6D-B54C2B4FC835}这是ifDetail->DevicePath的内容*/ 0 h! Y4 G: i: C' G: o: W$ g // Open file 1 s; t' b, {- A/ B4 T! A Q' m//前面都很正常但就是下面始终得出一个无效的句柄,我也就无法开展下一步的工作.7 \( V. }) G: c6 W1 i HANDLE pDevice = CreateFile( 2 s7 c% L8 ^0 I4 Y! o ifDetail->DevicePath, ! e- v% n7 V# G2 O' B GENERIC_READ | GENERIC_WRITE, " ?; d( w: D: o, x2 y( `6 M; ? FILE_SHARE_READ | FILE_SHARE_WRITE,6 ?; R8 J5 v0 z. u b( Z$ S3 C* x NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); 0 R$ q% E6 F, S& q( \ % H# Y$ _7 e: e/ @7 M8 v: L if( pDevice==INVALID_HANDLE_VALUE) pDevice = NULL;, f1 H: y5 W$ N: v SetupDiDestroyDeviceInfoList(info);1 _+ D, V( d6 [ 9 t1 d/ o. |0 @& J return pDevice; ! }4 h _. E' C}$ h ^( c9 @0 y6 B3 [ 再次感谢关注这个问题的人们。

    # [" K" ]) g. w5 u+ J 5 q6 W4 i6 P8 c& J7 H 2 h* f9 K V3 z$ W4 { 回复人: constantine(飘遥的安吉儿) ( ) 信誉:101 2003-12-16 21:23:57 得分:0 8 T1 u; w0 \1 v! S 2 y2 _ q- {. W9 \" w 8 d1 I/ H+ X+ H% w/ S: G! v ^* @( _( f k: \ study

    3 f3 t! ~, I; s) s. Z4 | 1 f0 v1 q5 v4 D- i$ v$ Q, uTop / U, E5 i+ w0 [! e, t / _7 A: {4 w/ R 回复人: wenyongjie(一个想成为大鸟的小菜鸟) ( ) 信誉:95 2003-12-16 22:28:46 得分:0 5 {# o2 }7 e5 r8 U' N6 L6 x - `/ S' D1 I+ x7 Q9 l% M 9 D' W; x3 c- j7 H ( |6 l3 a# S2 t6 _0 v3 A 只有学习的份

    ( [6 o. K1 x# i 6 u8 B" ?2 U) o+ b, NTop . C5 c/ E" k7 i8 O0 V: @ ! @, j& C# C0 h& m- a3 h. `4 X8 r 回复人: HUANG_JH(保卫钓鱼岛) ( ) 信誉:115 2003-12-17 9:50:41 得分:10 3 I! A, i9 e/ n/ W6 {" O 8 a" w+ ?# C/ i0 O$ f* i3 I 1 e/ ~6 |2 C7 F& W% y3 Z ' b5 p& G; a2 @' S* }7 y6 g/ v不知道有没有用!

    ///////////////////////////////////////////////////////////////& y1 Z( `! H7 H5 I, M3 m // HW9911 evaluation board software Rev. 1.0: D$ o! J( {$ G* L# Y6 S, y // program by Liu Ding, Bei Jing HEAD Elec. # {3 s+ ^. e& n* y% ?// this is the main program for the HW9911 USB device evaluation board0 Y: a% r# L* U1 P. y // it illustrate the basical read/write process of HW9911 - u: P/ Z' I- I8 v" ?// by three examples:! g- i/ D$ t* i* A% a8 h // 1. write datas to ram on the evaluation board , T% N: e9 _) U// 2. read the datas from the ram on the board 8 j6 S( A' @9 v1 g6 t; A// 3. send datas through RS-232 serial prot on the board , f2 Y" y* b6 t: w( a2 u7 O; {// 4 |3 L0 e6 M3 b( Y( [# h: R// the whole project are build with MSVC 6.0$ R5 Y! k" f0 [3 ^, L* C // and tested on windows 98 platform.8 k1 B) I+ T" o c' K4 j // 1 r3 _8 }: D9 } X' i; Q// notes: you can use hyper terminal to reaceive datas form RS232 port + L+ n& Z3 c/ l& t4 E% L//; l* g2 c: C* C* U' I# I' } // this software are designed by Liu Ding 2 x: n$ d# P7 z$ P& k( W// if you meet any problems, pls contact by email: : T; U* D1 g7 u* r// hugehard@263.net : v# q- i; a: j" c5 X$ S// or contact HEAD Co. by Tel 86-10-87312497 * w2 M" S' l( E5 [# |0 L& q% r2 H// or by fax: 86-10-87312495 , O. i* q; I2 g! K///////////////////////////////////////////////////////////////

    #include "hwdll.h" + G% p( ~0 m+ @9 J- y3 K! l- b- J( i#include "stdafx.h" E# X! d/ z& S) }& s#include <stdio.h> 8 b: ^' p; {7 S+ t2 v' l( W7 t0 k#include <windows.h>- c- `: `* e. B6 c: O6 s3 U& Q #include <memory.h> ! i" {2 l/ f! {# ^- k#include <DEVIOCTL.H>, I0 i3 A" |7 U% Z7 m; D# E #include <stdlib.h>1 z$ V ]" H9 h5 k! c( K #include <conio.h>3 Y: \# j) l1 e: e! n #include "hw9911.h" # s1 A* w% k* D3 k0 j% z6 B( Z9 G#include "test9911.h"

    % N* _3 [3 e5 x! N# iint main() 9 L( b4 I4 f$ U1 q{ ; h2 L( L% L2 `9 y9 o int hOpen=FALSE;* p4 h+ }7 s, L' g7 Z5 c/ O* L int hCommandLength=32;. m @4 d ~0 d int hDataLength=64;, _: i8 O% z$ \ n3 a6 W( z int i,VertAddr=0,HorAddr=0; + V, P) j- b$ }5 ` int addr,TotalLen;) O: ?( T. Q+ w. ^+ L9 j/ V USC StAddrH=0,StAddrL=0;7 q' G& ~1 K$ l& W USC DataLenH,DataLenL;8 U) Q% `2 c# R3 o, I! p* d USC *hDataBuffer,*hCommandBuffer; 1 Q/ B$ r& U! N USC ch1=0x61; 1 S/ S3 V9 a8 P+ ^9 }% Y HANDLE hDeviceHandle;% }% J% s$ @, l4 A 1 L1 i: Y$ d& z. q printf("************************************************\n");! p, W; V* y \9 p' s5 S printf("*******HW9911 USB DEVELOPMENT BOARD*************\n"); + \- X/ Z( a4 @3 ^( d6 B+ S) f printf("************************************************\n\n"); , D O7 P; ?) }: L: P1 C printf("now press any key to open board\n");+ ?6 g, n; Y* Q2 K getch();

    /********* call hDeviceOpen in hwdll.dll to open the board***/7 q: L# L- J' C T- z' r/ [3 X$ s //hOpenDevice 说明: ) ^7 }$ x" M+ o6 d3 U1 r& [% G/ i// BOOL hOpenDevice(HANDLE *DeviceHandle) Z; i* U: O0 x. ]' m4 A4 i# J- F // 作用:打开设备% v$ ~; o! ?" v // 参数说明:+ o. w2 n4 M1 X: X+ J // DeviceHandle:设备句柄 8 z- [5 K6 ?) w; y4 R3 h// 返回值: ; V9 I, x7 D* s: M" h5 e' H// 设备打开成功返回 TRUE,失败则返回FALSE / c1 E2 s7 q1 [# P7 K" d if( (hOpen = hOpenDevice( &hDeviceHandle ))==FALSE) * V1 q; L0 u8 u9 s {3 {( o0 B/ ~1 r" g- G printf("can't open device\n"); # Q! N% O$ b" s% j& z9 W printf("press any key to exit\n");6 ?4 D. }& e1 Z# z getch(); 8 Z2 g1 k/ y8 @8 T& X, q9 C0 q return 0; ; |2 M+ s% @& o } + a1 U; i# s( _ X7 k9 {. X+ n else m5 V S0 E* ?+ C& |. J9 K0 b; o printf("\nCongratulations! device opened!\n\n");

    /****** build and send command **********/- _4 u! {1 c3 ] printf("how many bytes do you want to access?"); 0 Y& u. X$ v" H1 Y5 q6 x7 G scanf("%x",&TotalLen); 5 n$ c; I! R S: I- E- { while(TotalLen > 0x7fff) " y% A4 [4 x- j2 E5 X( V4 a+ C {& @, y# c; \: b) W9 E3 t6 K0 c4 Q. `, V printf("pls input a hex data less than 08000\n");! a# U" T2 B# ^9 N$ _7 s: ?: }) G scanf("%x",&TotalLen);0 d/ S" b' p, y } 8 S: A8 g, C8 ?. Q/ \% T8 K/ E DataLenH=(USC)(TotalLen/0x100); //data length high bytes9 b* ?8 S7 I, W DataLenL=(USC)(TotalLen%0x100); //data length low bytes

    printf("************************************************\n");! }7 k; [9 u. S' L printf("now program will write datas to ram on board\n");, n2 k; @1 \1 x, ^, w printf("total bytes of datas is %x\n",TotalLen);; A1 @, ?; h/ Q3 `2 s printf("press any key to continue\n\n");/ l- Y6 {" n8 `, ^4 ~) D getch();( k l# i: H' m7 U8 d4 s /***************************************************************** : l% g# ?" J, {8 t, ^5 m I now will build a write command packet + Z0 c# {7 r3 R. o with the first byte is 'w'.; U% h. O# g6 R* V& Q and the following bytes are:( b9 b6 F8 `, Q ]4 X start ram address byte high, start ram address byte low, 6 v: j; |$ N9 [) {! F datalength byte high, data length byte low.5 w8 v+ `, \7 Q0 R$ X this packet will send to device through WritePipe1, , q0 U8 B4 \6 |7 B6 L* P. K# Q which is endpoint 2 of HW9911.* P' h5 J- L9 a2 l; B4 R when the device receive this command packet,/ \; k( `- u8 ^5 B- D+ o it will write TotalLen bytes data to Ram on the board % D4 n5 l8 j4 g9 B******************************************************************/

    6 c6 Y9 g+ A/ d" v( U. N hCommandBuffer=(USC *)malloc(hCommandLength);6 J- {$ d4 a- f% }9 \ hDataBuffer=(USC *)malloc(hDataLength);# ^ W( X. K/ Y8 t4 w hCommandBuffer[0] = 'w'; //read command+ }8 e, v8 x2 ]5 ~ hCommandBuffer[1] = StAddrH; 0 R# p: x0 y) y5 x# B: _# }+ ^8 U hCommandBuffer[2] = StAddrL; 1 N7 B! ~2 G9 W6 S' W hCommandBuffer[3] = DataLenH; 6 h! T- s7 p$ ^ hCommandBuffer[4] = DataLenL;

    /* call hUSBIO() in hwdll.dll to send command packet to device*/1 p3 l/ Z0 b# |1 X$ W7 x K, Y // hUSBIO 说明: ; @. X1 [3 ^4 B- @& L8 Z// BOOL hOpenDevice(HANDLE *DeviceHandle, $ K9 u5 s& Y. _) r8 M" `- y// unsigned char *IOBuffer,1 g; g! r+ d1 J( [! L; c4 L7 ~; l // int BufferLength, % v8 t& P( w3 b4 Y// int PipeNumber, . z# V# ?6 ^' J( ~// int Action) + w! z$ g9 T* y8 n& Q& D H) ?! m// 作用:设备读写 5 p% d4 A6 z& P2 x* m$ m! ^// 参数说明:* A/ i' \" u* E- H // DeviceHandle:设备句柄8 z7 E! h# P* h' T8 V0 p // IOBuffer: 指向要传送的数据指针 8 e( | H! L* `// BufferLength: 数据包长度 / H: f3 l D$ H$ f( E; V6 j# r// 对于发送缓存1、2和接收缓存1、2,BufferLength必须小于或等于32; |. b; a( g: ~( M7 r // 对于发送缓存3和接收缓存3,BufferLength必须小于或等于64 5 f( |5 D: A; `# ?0 q9 y// PipeNumber: 通道号) R3 q H$ C& {( z( h: M$ _ // 发送缓存1:PipeNumber=0;2 o d9 i( S- B. I% k4 L // 接收缓存1:PipeNumber=1; $ C" d- w8 W3 y1 x// 发送缓存3:PipeNumber=2; 1 P. j+ e2 x% A8 I// 接收缓存3:PipeNumber=3; @% D* C( x- ]6 g// Action: 读写标志。TRUE代表从设备读数据到主机+ h. d2 `! S/ d$ s# ] // FALSE代表从主机发送数据到设备 9 X/ n# J2 C- J, O( l/ \// 操作接收缓存,Action必须为FALSE; I6 c9 Z/ O6 g$ r& y" e: K8 A: D // 操作发送缓存,Action必须为TRUE 7 X/ w( n8 c. G: V/ X: {// 返回值: / o) E" K, J. \* H3 [' e// 操作成功返回TRUE,失败返回FALSE

    if ( hUSBIO( &hDeviceHandle,. n' e* ]5 Y! ]3 c6 v' { hCommandBuffer,1 U3 l9 D9 k; d9 H( ?+ ?1 Q6 q hCommandLength,' R% t- S9 l: C hWritePipe1,* z: F2 |2 s' Y: E/ W$ t FALSE) == TRUE)8 [$ @2 @$ Z& {7 P {& A% f; g4 K$ ^3 @8 b }5 l printf("command 'w' writed to board\n"); - s+ v! i; _5 s! w! ]2 M K printf("now press any key to write datas to ram\n"); 8 g( P+ d- c# ?2 T9 R* x- z* _ getch();. z/ s! g' s3 Y& \% q } ; @% J3 e8 U! y0 i' z$ F else 1 j, m& @- r8 y7 Q) D3 @ printf("data can't write to device\n");

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

    printf(" ");9 P% D* J& E: y# X8 v" x8 r5 y for(VertAddr=0;VertAddr<=0xf;VertAddr++)' d# S5 p# y- K printf("%02x ",VertAddr);! g5 l7 D1 m/ Z3 q u: `' k printf("\n"); " x t" D( r' b addr=0; ( n; t2 E$ { @' O- x! p while (addr<TotalLen)) m' U. M2 q+ E( } { ( ~ C4 o& X' \4 I- j ~- V if (addr+hDataLength > TotalLen) " F8 Z8 O8 d: Z8 K2 ~8 D hDataLength = TotalLen-addr; ! O/ f0 }- e, c for(i=0;i<hDataLength;i++): B+ Q* U, r( N u% Q( o9 F2 _5 z { : p, j! ~7 ?) r( c1 @ hDataBuffer=ch1++;0 r( g4 {/ E; c if (ch1 > 0x80) 1 T8 W2 q6 K1 i- D |. \% [4 h ch1 = 0x61; 5 {0 v6 e, T& { } q6 B% @. d" u/ L+ @/* call hUSBIO to write datas to write pipe3, which 4 l/ S0 g3 Z$ o is endoint 6 of HW9911*/

    if ( hUSBIO( &hDeviceHandle, $ a7 n& M" Z+ R" o7 ]# J hDataBuffer,% a) M" u9 b) _# j) z0 v hDataLength,2 c7 O( ~3 b: q5 j7 v7 W hWritePipe3, , _ }5 E* S" K4 l8 ~ FALSE) == TRUE) //FALSE means Write operate . Y- P6 ^0 |! i1 M: q1 I {! U2 l- Q9 x+ \* N- f: y3 V) q for(i=0;i<hDataLength;i++)5 v- ]' |& P! _5 N% C {* ?/ u; R* h/ i8 y7 d /* print format control */ 3 l N6 V% ]$ F# _/ v if(i % 16 == 0) U# ^* _. t7 o4 t8 j { . h$ r$ N6 k/ @# Q& k4 o printf("\n%04x ",HorAddr); 0 E5 L2 G2 J. r; i+ x: } HorAddr=HorAddr+16;/ t9 o8 T' }, @1 m$ I* H( E$ x } 6 M* O( _+ @ {8 o" ~, ]" T8 p' ~ printf("%02x ",(USC)hDataBuffer);! ~( [9 _& o/ e A* E5 C } }. R% e9 i1 T( x& Q" w [, ] addr=addr+hDataLength;1 I4 N/ L7 n5 p8 j( T6 @% { c! ?9 @ }+ a' I/ F& ~4 E else 0 h# v% y& N. x { : T5 @; n) x& |/ d# t( g; r printf("can't write to board\n");) H8 `/ B( J% x2 d5 u k1 m exit(0); . A' E, p; R0 O. x& Z7 f9 b. i7 a p }0 _9 J7 f. b# l }) q, Z9 B4 z! S9 o printf("\n\nTotal%x bytes write to ram OK\n\n",TotalLen);

    4 s' p u( a- M) n " ]& V6 i! X+ j W- ~# S" t$ }+ D+ V- v2 C' iTop $ h4 `& n7 ~1 d" p6 v 6 L& T! p- S5 H0 ` 回复人: HUANG_JH(保卫钓鱼岛) ( ) 信誉:115 2003-12-17 9:50:51 得分:0 . U# Y# c5 l* A+ I8 j 4 J7 m# B8 Y9 @. W5 e9 a0 _ 8 y1 e7 X" F- ~1 V; P' d

    /*****************************************************************6 A) R; p2 U; r% Y now will build a read command packet 7 x' w" }- k3 L* T3 }- \+ o% y) R with the first byte is 'R'.2 `! A+ H6 W9 h z and the following bytes are:; R) \" Q* q( m0 P& N& m* s start ram address byte high, start ram address byte low,% m+ P$ M0 o' d datalength byte high, data length byte low. " L( \) J- H, Y' Y" H this packet will send to device through WritePipe1, . W7 V/ v0 D8 i" x# ?: a which is endpoint 2 of HW9911.1 \ A1 K! L$ e/ g5 U) P: Z0 w& q1 } when the device receive this command packet,+ `3 x _* m x9 O1 l+ R it will read TotalLen bytes data from Ram on the board' W' r4 z, y# b+ K, Z ******************************************************************/

    printf("************************************************\n");5 M) ~3 }4 C' o0 l) g printf("now program will read datas from ram on board\n");7 g$ e& N$ h, t' N printf("total bytes of datas is %x\n",TotalLen);& V2 G& s1 s6 v g+ ^! l* W printf("press any key to continue\n\n");# l9 b/ U1 B4 C: V getch();! R+ s; h" m2 \ hDataLength=64; 8 f9 `, ]% }. \* e2 r. h: L/ a hCommandBuffer[0] = 'r'; //read command# T m& ]$ o3 l hCommandBuffer[1] = StAddrH; ' v# A" A; m, `1 y' b2 ^" g hCommandBuffer[2] = StAddrL; 1 \1 g" B4 _) c, P hCommandBuffer[3] = DataLenH; 6 G, J/ }. q- n: { hCommandBuffer[4] = DataLenL; - y/ L' ^: |7 L, c& ^ /* call hUSBIO to send packet */ O* b( \' J4 g5 c2 I. K& U if ( hUSBIO( &hDeviceHandle,$ d! q0 B1 t' [% \8 L hCommandBuffer,2 Z- [6 i" o" u, y" L0 p# Q* R hCommandLength," z& q3 l- U; w# x( L hWritePipe1,' }' k) X5 B0 I" y! C5 u% N7 F FALSE) == TRUE) 3 X: X4 N; x( w {- N7 ~& K! `1 g printf("command 'r' writed to board\n");3 i" ]: B0 `( B" P* T: M, t printf("now press any key to read datas from ram\n\n"); " R. F7 `: a3 n5 x# Z) l1 X getch();$ C- k" f9 R& p# c } 0 ~, z0 R2 ?5 s* g9 j1 i else o* D" Q C. J! I4 i printf("data can't write to device\n");

    /******** read ram data form board **********/ / N; p7 i! ]4 u) X1 s1 ~1 F printf(" "); ^1 h; Z2 y; T7 D; t) |& U for(VertAddr=0;VertAddr<=0xf;VertAddr++)9 Q: p- e) K8 V8 o+ \1 c printf("%02x ",VertAddr);/ G1 `5 n! b' @' [. a printf("\n"); % J0 ~- K) X7 ]6 p' y addr=0;1 d/ D" t2 ^" T: c6 t HorAddr=0; ) @- i+ y; P" a while (addr<TotalLen) ; n2 p8 }- f- q0 X4 r {( ~% y2 l. n0 r2 i& u9 L, b if (addr+hDataLength > TotalLen)7 P$ A# p8 {9 L hDataLength = TotalLen-addr;) J5 Y6 f! A3 T /* call hUSBIO to read datas from board */ & H4 s: \ j" c) f" D0 H4 V! Z if ( hUSBIO( &hDeviceHandle,( x4 W* j, c! F! @ hDataBuffer,, a, Y# F+ ~* m0 P hDataLength,; `. Q b& C& d. e& a f, H hReadPipe3, - P$ |% X% z; `' u( B TRUE) == TRUE) //TRUE means Read Operate$ [& v$ M5 D+ ?+ W { 0 q$ T, ?: V+ c, o/ a( w for(i=0;i<hDataLength;i++) 0 Z+ o9 h: A+ {& B1 y7 R6 j { , M9 _0 e7 @. I% `/ W/* print format control */: b' l2 m- D% @- Q7 [9 w: \ if(i % 16 == 0) 1 ?6 v O) u- K; M {0 r% Z1 F& B' P2 U e4 h printf("\n%04x ",HorAddr);" k# d) m7 y6 O/ E HorAddr=HorAddr+16; & x V4 {2 Z/ D1 e6 J( n& H } I" u Z- }2 }& y- F l: _ printf("%02x ",(USC)hDataBuffer); ; X0 x6 F! G5 M) r" N& g }6 ]: H4 u- d* g, [! b& M, O addr=addr+hDataLength; . _1 {# C% T" `/ a, _. ] }, K' W; Y$ a1 V: x( |. s else4 V: D% ^' N" G2 v5 V9 n {+ N/ i1 }( I. C% @4 k: T printf("can't read from board\n");5 L# I6 i; s8 I: }: o exit(0);* @3 y4 u V9 b0 B) `0 E7 \+ \# P# n } 3 W! x, R, I8 h' r3 q } . @: A, ^5 r' g7 k- D printf("\n\n"); # p8 y O% W3 A5 \. \. x6 H% r; G/ Y printf("%x bytes read from ram OK\n\n",TotalLen);

    /*****************************************************/ : h9 c% M3 \4 C4 D( _/* process rs232 test */ 9 z$ W" u' T" m3 S# o- W/* the first byte in this packet is command 's' */ " C* ]9 K- w2 w! y& [/* and the following 2 bytes are used to set */ 2 j7 q5 T2 {! R8 Q6 y/* the baud rate of 8051 */ 5 s' g8 O7 Y+ J/* they will be write to TH1 and TL1 respectively*/* H( b0 P! T P% h8 I1 ]: T+ L /* the following bytes are datas will be */ , Q O! E$ \. R2 z$ w/* send through RS232 serial poart */1 ^5 k! W7 D0 v5 n. h% S: m /*****************************************************/! X$ n+ a1 R! S9 @1 X printf("\npress any key to process RS232 Test\n");( [+ Z8 {* g8 n; a/ q8 M& @ getch(); : x) K, Y1 y1 X( h. s 7 \) S* L' I9 [) B L USC TH1,TL1;; x8 ] ^( `# g5 [( V H& N char hStr[30];- [% R$ c& `/ p TH1=(USC)(BD9600/0x100);- U# q. h7 _0 d, B, K5 ` TL1=(USC)(BD9600%0x100); ' e- D( R% _/ b4 Y; {: Q hCommandBuffer[0] = 's'; //read command0 f2 s* c! @, O2 j; W5 w hCommandBuffer[1] = TH1; 5 ?1 g- [, w- O8 Y3 z hCommandBuffer[2] = TL1; //start address is 0x0000

    strcpy(hStr, "Hi, dear HW9911 consumers! "); 9 E1 |/ ^. L8 g' |8 Q printf("Hi, dear HW9911 consumers! "); * g4 w8 e( u2 N8 | memcpy(&(hCommandBuffer[3]),hStr,27);

    if ( hUSBIO( &hDeviceHandle, * O+ d) X! L9 D4 Z hCommandBuffer,5 ^! d8 e0 s* f; ? 30,; ~& g: I7 _9 }% \8 Y) B6 Z hWritePipe1,. E9 f4 x# }5 Q o( P2 G- M. ~# D- A2 e FALSE) == FALSE) ' K% Z3 t- \, g" O+ W1 v; ^- y& j3 W { 6 T( n3 j8 V+ g0 \' C6 B; j/ v7 } printf("can't write datas to RS232\n");- ~% Q3 S7 q( k! P& _& }2 c exit(0); 1 I1 F5 U! [+ n2 u6 q }

    strcpy(hStr, "I'm HW9911 Evaluation Board, ");3 j! c5 v& z% }4 c0 q7 ~2 W printf("I'm HW9911 Evaluation Board, "); ! z# d8 w1 t0 D; ~, T memcpy(&(hCommandBuffer[3]),hStr,29);1 \; a. q J6 |6 b3 [ . w2 I8 y7 [, H# T, z if ( hUSBIO( &hDeviceHandle, / I7 {/ @$ y9 Z N1 o* W- g0 }. z hCommandBuffer,9 ^' \0 b7 |8 ^9 V 32,% ]1 o& ~$ y" _7 `" o2 @ hWritePipe1, 9 n5 c1 i! c' _: E! |/ t. ?& m FALSE) == FALSE) ) R3 Y/ d& g2 y1 H [* `5 W6 v( n8 N { 9 n! Y2 \# L0 X4 y4 X; [ printf("can't write datas to RS232\n"); 8 T% I% m: U3 O* k+ p exit(0);7 w' }8 \% i. I& i" G- m* @ }

    strcpy(hStr, "thanks for purchasing me, ");2 P! s/ @9 L1 C printf("thanks for purchasing me, ");) T5 U3 k7 v( R! j memcpy(&(hCommandBuffer[3]),hStr,26);- e7 L+ p& j% v( ?# t. ` * D! f6 n. v2 x1 I" u6 o' a) d4 c if ( hUSBIO( &hDeviceHandle,5 j7 h J4 `# N. A hCommandBuffer,8 E2 i( L, Y1 U+ W, s 29,. X% Z5 p' l5 B' K5 { hWritePipe1,2 m, I8 Z7 R+ U9 @: } FALSE) == FALSE): J0 v3 D$ x. k% _& M" {4 j! ? { ) k7 k* S/ W: @1 r s& S printf("can't write datas to RS232\n"); / |! Y% d( Q; T. _+ v/ A0 h# t exit(0);) K3 I. T* a! m" \ } - x' G( o$ F* b0 v 3 b; |' |% P# j2 u- ?: [3 o: _8 I strcpy(hStr, "If you meet some problems, ");) ?# ~3 }; \; B# F# ^& K. C printf(hStr, "If you meet some problems, ");( x: z) S! b/ e* O0 L memcpy(&(hCommandBuffer[3]),hStr,27);. g3 Z" A( ?. D8 p) P8 z3 H 7 K. A7 Z P$ J& ~/ i& o$ w. z: u if ( hUSBIO( &hDeviceHandle,1 ^3 E. r) L2 W' Y, P% C hCommandBuffer, ! B6 p/ B) N: _3 J8 s 30, & P& `% r8 u7 c4 _% h0 G2 V hWritePipe1,4 {& [' |% h! c; `3 r: H( x d FALSE) == FALSE) & s- @0 f& c9 g+ h* P {3 S" X& _. y6 U printf("can't write datas to RS232\n"); ; r( u& |/ z' Y. S8 X T/ O6 e exit(0); 1 m+ l, k$ h' ]/ z0 ] Z; I1 G% { }

    strcpy(hStr, "pls contact my designer ");+ f/ G9 I1 F$ n9 y' R printf("pls contact my designer ");7 d; |: C. ~$ ]1 \% y7 Q7 Y memcpy(&(hCommandBuffer[3]),hStr,24);- }( v! D. V& v" t8 T; _) g5 _ 3 Y0 u" u' L. r" @, ]4 F8 x if ( hUSBIO( &hDeviceHandle,$ ~8 R* z: z0 Y; O; `) ^# Z; v% a hCommandBuffer, 6 h* I6 i/ A5 k3 H 27,# s" }8 \! O z, i3 Y, c hWritePipe1, x/ \8 ?& A* U% w' z4 l5 f- R7 a FALSE) == FALSE)% D" B$ m. S* S$ k+ |# F5 F { ; }1 ^, e5 C# R/ u' K! S printf("can't write datas to RS232\n");; P2 Z) p3 T- D9 W; ? exit(0);. b* p' o @; u+ A }

    strcpy(hStr, "by email: hugehard@263.net."); - `- t* B" E' w$ |. c& J printf("by email: hugehard@263.net.\n"); ^1 D5 M/ @2 R8 ^4 O: Z! | memcpy(&(hCommandBuffer[3]),hStr,27);9 u6 c" Z4 v, Z 9 L9 f( y) p2 n5 V0 K if ( hUSBIO( &hDeviceHandle, 0 x e* N; g; O$ X$ R hCommandBuffer, 6 _1 D" S1 s% F 30,' q2 p/ M2 i$ p' ~2 i hWritePipe1, * @8 L0 Q+ h/ X9 W6 V m FALSE) == FALSE) ! r2 k9 E8 b4 J+ G" R& {2 w+ |6 ` {: F$ Z& Q: r. J- T! ]- ] printf("can't write datas to RS232\n");5 o( u) F) ]/ M( L. @8 ^ exit(0); 4 `! z. L2 }& t4 k' @ }) n9 I. Y. F2 ?0 s, \/ U /********* call hDeviceOpen in hwdll.dll to open the board***/9 r! U& `: Z5 M" [6 i' a // hCloseDevice 说明: : w4 h* n/ c% [( x/ j" W// BOOL hCloseDevice(HANDLE *DeviceHandle)6 u! }& q4 D( O2 {: Z // 作用:关闭设备; e6 |0 M8 \& K$ K ~* i // 参数说明:% L( H; w8 A$ h4 N* s // DeviceHandle:设备句柄) n9 `* t& n7 H* _- ~0 E' j: S // 返回值: - R3 V3 A, W; W0 E Y3 f// 设备关闭成功返回 TRUE,失败则返回FALSE! Y9 K( l4 f/ _4 l" `4 E; c if( (hOpen = hCloseDevice( &hDeviceHandle ))==FALSE)" M& Q! u/ R" t o) i0 z { . ~/ D/ M8 k7 s1 S printf("can't open device\n");/ M3 R! n4 r! |9 ~ printf("press any key to exit\n"); & Z$ y/ s+ W) {8 ]7 I getch(); - ^0 j; l% l1 X return 0; # d7 @2 P! r0 P" j }! ^/ h! } Y9 h0 i: b+ W else * Z N/ X p' Y$ G5 T& Z printf("device closed\n");

    printf("press any key to exit the program\n"); : S3 e+ ~ I, j8 K8 _* L free(hDataBuffer); % ~$ y6 G( G* V$ ] free(hCommandBuffer);, ]- b1 @6 ?3 P getch(); 3 ^* S3 H/ D& b C: K! N return 0; ! I# G8 I) u0 J2 _4 S}

    ! Y* j: Y4 y% N: } $ i& v, e4 \( c , w. I; ~: a) ]7 {) iTop . o* U5 X* y0 y _' s% L3 a * k) M( f, n) q3 H7 M; \ T 回复人: aiyu33() ( ) 信誉:100 2003-12-17 11:41:24 得分:0 ! ~) u- ?* u6 |0 M+ M+ F 4 A( y( E0 p b ! \3 H0 G0 z7 G- p0 W. E 1 I' M [* ?# [ upupupupupupup

    * E( Z+ J$ s0 O9 M6 ]% ?. \% c) i/ O " n" w' R/ {0 T2 E3 C8 nTop 9 L/ D6 a/ A: P, l 5 z. |8 x! R/ Y- Q& ^; x 回复人: kingcaiyao(AKing) ( ) 信誉:110 2003-12-17 12:53:39 得分:0 3 b8 Z* c6 b; d% H 8 r$ o+ O) v2 _( S( z 1 d! {! ^8 J/ }% X7 |2 o; I2 b# G0 { 7 }9 _: {( l0 L) P& B0 x' p! W你开发的这种软件类似于Palm Desktop Software,负责Pocket与PC之间通讯,我建议你最好先写一个驱动,将USB口虚拟成一个串口,然后直接对串口操作会很方便的。我现在做的程序可能和你相似是一个CDMA模块,通过USB口与PC机连接,然后由驱动程序将它虚拟成一个串口,我的工作就是和这个虚拟的串口通讯。

    8 P2 Q0 K: Y$ S) }0 q 7 ?3 ]3 Z' C+ c% L: n! [0 k$ N: VTop & q6 q; t$ e* C 4 V& E4 A9 }7 e5 q* J- E$ f. ^# K2 i 回复人: kingcaiyao(AKing) ( ) 信誉:110 2003-12-17 12:56:27 得分:0 # P9 A1 u2 w( H4 ]* m9 K! K * O6 A* u- d' _- o* }, B0 K ( A/ ]+ e( H1 I% \# ]; {2 h$ _ 0 { u! G* p' l, e: Y! ?9 nPocket与PC连接肯定有驱动的,如果驱动程序没有将Pocket虚拟成一个串口,你也可以直接通过设备GUID和设备序列号进行访问,详情你参见我专栏上的一篇文章。当然了,通过虚拟串口来访问设备肯定要方便,简单些。

    ' c" o9 [; B; `1 j+ k" u . ]( I/ }5 E2 W" i6 `$ iTop ! e! Q' d3 X; Z1 E5 K, I. _! M) E " `8 h/ g; O' n8 L' I1 _3 p 回复人: aiyu33() ( ) 信誉:100 2003-12-17 13:31:08 得分:0 5 V- p% p3 ~7 A) ^) ` % E: |( C- v" n3 W) F1 O* X * E* u) m" j. k4 M# Y: @ % C g! p7 f* t4 l我得这款pocketpc默认只支持使用usb与pc相连的,而且activesync3.7就是使用usb传输数据的。如果我自己写驱动的话,不仅不熟悉而且很可能activesync3.7这个软件就使用不了。我只需要利用它的驱动。你的专栏上的那篇文章我也看了,我就是模仿你的写的代码,但就是到createfile这步就不行了,我的同事是用palm开发类似的程序,也是到这步就行不通了,是不是有其他的原因? 9 H1 r! z6 F- p0 {2 q我还想问问如果驱动程序将pocket虚拟成串口,如何查看它的符号名呢?

    . O- |0 L) f( K6 s2 F 5 @. I0 l4 N, G2 D) T $ x# {; U" z- F: U. qTop 6 F J( _/ P+ o8 f: b , l$ Q* i, b, n& w& j7 s/ ~ 回复人: kingcaiyao(AKing) ( ) 信誉:110 2003-12-17 16:53:17 得分:0 5 i, v1 a* v; F( u' c' a+ { , T% E1 L6 \1 Z% B 3 y1 T; y3 a5 {0 U" {# u0 k- D ) B* ~& H; {, e- h假如将一个USB设备虚拟成串口的话,那么它的符号名可能是COM3,COM4,或COMn,这根据你当前PC机的配置而定 。它的符号名位于注册表中HKEY_LOCAL_MACHINE\CurrentControlSet中,你可以搜索注册表,另外在2000或以上的操作系统中,你可以到HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SerialComm中看到。

    " J* m; o" w. w: W' a. J G4 \- z. E2 N" U/ }Top : R. H- F8 N" {- a . W# |& t0 z3 f. u: Q" t 回复人: kingcaiyao(AKing) ( ) 信誉:110 2003-12-17 16:55:33 得分:0 . V7 E+ n0 J: q; C* J% w " F1 \$ w2 Q! m/ i8 U6 o 5 O- Y+ A& u% \: k 2 u+ v0 ~3 P) z9 N我以前在一张贴子中详细回答了如何利用设备序列号和设备GUID来访问该设备,你可以搜索一下CSDN。你所说的CreateFile不能打通设备,你要查一下,你的符号名是否正确,包括设备序列号和设备GUID是否正确,设备GUID你可以从驱动程序的安装向导文件.inf中找到,设备序列号则需要你到注册表中去找。

    , [' V% T! E; c: K. ~% l" [. O Z+ u % }* H5 M( w9 D1 P* _. N/ ATop $ Y0 \5 M, y4 u# [ + y3 {( q6 T4 | 回复人: gyj_china(透明) ( ) 信誉:98 2003-12-17 18:15:30 得分:90 9 U# Z! q$ M4 d% M5 r) j3 Y2 X/ L- T 5 p% C1 ?- ?& J' [$ {+ \6 X) W 8 P) H- p. {0 p8 Y9 N/ x 8 ~+ _2 I- B+ |' B5 {+ @没有星星不敢发言:(

    5 W1 u8 G1 h% R- j# x8 `8 b7 ^- ? 9 \7 W; @; d* P3 f0 G% w Top $ O" S( [( R. @/ v 4 C8 f8 }1 h. e2 v# O 回复人: aiyu33() ( ) 信誉:100 2003-12-19 18:27:28 得分:0 8 x' `4 o: w- u' r0 f 7 R% `$ V2 l$ a( w) c3 u% k E $ d$ L8 `5 Y" z7 q 5 \. K! `2 ~4 z' Y, P( i9 S不好意思,是因为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 14:23 , Processed in 0.521158 second(s), 99 queries .

    回顶部