QQ登录

只需要一步,快速开始

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

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

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

10

主题

1

听众

98

积分

升级  97.89%

该用户从未签到

新人进步奖

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

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

- l# _4 d, r3 H$ G

我暈,看來這回死定了

" {2 H, t+ i' ^7 N! b

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

3 ?! x p* @: d, m' B7 A" T/ g

老大救命哦

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

10

主题

1

听众

98

积分

升级  97.89%

该用户从未签到

新人进步奖

回复

使用道具 举报

ilikenba 实名认证       

1万

主题

48

听众

2万

积分

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

    [LV.10]以坛为家III

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

    群组万里江山

    群组sas讨论小组

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

    群组C 语言讨论组

    群组Matlab讨论组

    API之打印函数:3 `0 J" {# n+ S: y# G AbortDoc 取消一份文档的打印 ' b3 i/ f6 `( ^& ~! t7 o AbortPrinter 删除与一台打印机关联在一起的缓冲文件 & Q5 ]& z% H4 t5 Q( t- W AddForm 为打印机的表单列表添加一个新表单 9 j' C; r% \0 G# {2 y. R* G; j9 KAddJob 用于获取一个有效的路径名,以便用它为作业创建一个后台打印文件。它也会为作业分配一个作业编号 - g. h# Y) u( N7 e1 z4 R1 L' Y$ FAddMonitor 为系统添加一个打印机监视器 ) N" T: d3 s% `' M- F9 W5 BAddPort 启动“添加端口”对话框,允许用户在系统可用端口列表中加入一个新端口 + E2 T; d, g+ c AddPrinter 在系统中添加一台新打印机 & l/ O( {2 ~+ {$ YAddPrinterConnection 连接指定的打印机 0 ]4 M0 e4 I9 h5 {3 c AddPrinterDriver 为指定的系统添加一个打印驱动程序 & l' g+ V3 z" G8 F2 ^AddPrintProcessor 为指定的系统添加一个打印处理器 5 Q; ]8 R3 e! c( R3 ]# \5 D% b AddPrintProvidor 为系统添加一个打印供应商 0 i# d$ ~; T4 y, OAdvancedDocumentProperties 启动打印机文档设置对话框 $ h* ~' y( v4 X# I8 b ClosePrinter 关闭一个打开的打印机对象 : n- u% l7 @8 j; aConfigurePort 针对指定的端口,启动一个端口配置对话框 * l" w1 {4 {6 @4 zConnectToPrinterDlg 启动连接打印机对话框,用它同访问网络的打印机连接 : Z+ R8 w+ a; j% i: a- Q% } DeleteForm 从打印机可用表单列表中删除一个表单 & g, {6 t3 \+ K& K/ B2 }5 iDeleteMonitor 删除指定的打印监视器 3 K% {& R& `% g) H, K' l5 Q" o9 Z DeletePort 启动“删除端口”对话框,允许用户从当前系统删除一个端口 : W8 {0 i- S! M8 T8 r6 H! O7 C DeletePrinter 将指定的打印机标志为从系统中删除 ' a4 F; Z/ o: M3 [ DeletePrinterConnection 删除与指定打印机的连接 - C/ ^3 k2 T7 c. V9 sDeletePrinterDriver 从系统删除一个打印机驱动程序 / {, r7 i7 m+ `7 _ DeletePrintProcessor 从指定系统删除一个打印处理器 , f# W; N6 \6 Q+ I6 V! K* y3 y! ?+ rDeletePrintProvidor 从系统中删除一个打印供应商 $ q0 Q/ u$ Y1 T M& Y5 c7 FDeviceCapabilities 利用这个函数可获得与一个设备的能力有关的信息 : t6 q. r o7 A; c DocumentProperties 打印机配置控制函数 8 H; @+ Z' x7 K3 Z0 C EndDocAPI 结束一个成功的打印作业 5 V V* w2 K8 I5 {$ w/ `" k: LEndDocPrinter 在后台打印程序的级别指定一个文档的结束 " X: E) o6 b( m3 I6 K' k EndPage 用这个函数完成一个页面的打印,并准备设备场景,以便打印下一个页 9 {& k; ^! m, r: M5 ] EndPagePrinter 指定一个页在打印作业中的结尾 & G6 O% V8 U W* S5 E7 i0 zEnumForms 枚举一台打印机可用的表单 + Z" S$ Z5 U* ^1 C7 N) g EnumJobs 枚举打印队列中的作业 " j8 j3 t1 ?) Q8 C5 A; ?EnumMonitors 枚举可用的打印监视器 1 T m& J9 }. P# F2 f# J EnumPorts 枚举一个系统可用的端口 ! Z/ q2 u! ?( L EnumPrinterDrivers 枚举指定系统中已安装的打印机驱动程序 & V6 g1 U9 M/ @* j& }, Y$ pEnumPrinters 枚举系统中安装的打印机 3 @) J( o: N! g, {/ z3 l EnumPrintProcessorDatatypes 枚举由一个打印处理器支持的数据类型 6 p2 e8 [- J, E- c9 t: P+ }EnumPrintProcessors 枚举系统中可用的打印处理器 ! I# g1 v# ]% ]0 b) rEscape 设备控制函数 ; I+ n/ J) O5 K FindClosePrinterChangeNotification 关闭用FindFirstPrinterChangeNotification函数获取的一个打印机通告对象 9 U4 L$ P9 U8 N7 A% L' M! qFindFirstPrinterChangeNotification 创建一个新的改变通告对象,以便我们注意打印机状态的各种变化 " |2 z G2 \0 a, D( i* [& ]" i FindNextPrinterChangeNotification 用这个函数判断触发一次打印机改变通告信号的原因 # N- A3 O" H7 G, T* wFreePrinterNotifyInfo 释放由FindNextPrinterChangeNotification函数分配的一个缓冲区 ; u1 v. Q& U4 D* t0 N+ B$ K GetForm 取得与指定表单有关的信息 ' w' K K G: Q' C. mGetJob 获取与指定作业有关的信息 9 Q' u3 ~' s6 CGetPrinter 取得与指定打印机有关的信息 - p0 c6 N4 G3 r/ s' DGetPrinterData 为打印机设置注册表配置信息 ( s3 p4 q% p# A0 b+ Y* l' w& s GetPrinterDriver 针对指定的打印机,获取与打印机驱动程序有关的信息 # R6 | x: \8 {$ T6 r GetPrinterDriverDirectory 判断指定系统中包含了打印机驱动程序的目录是什么 + R* P( o, f4 A0 @3 ~) V0 A4 Y: {' i1 D GetPrintProcessorDirectory 判断指定系统中包含了打印机处理器驱动程序及文件的目录 7 {1 S6 F7 o2 r# g; i- }6 `* }OpenPrinter 打开指定的打印机,并获取打印机的句柄 Y3 ?3 Y- B& C. xPrinterMessageBox 在拥有指定打印作业的系统上显示一个打印机出错消息框 " ]0 y. { M x/ p" z* P- r) H/ C- p! S PrinterProperties 启动打印机属性对话框,以便对打印机进行配置 9 T- G& u3 F9 C% q+ R2 B! I0 X ReadPrinter 从打印机读入数据 / E3 `3 _; \& F* ] A4 p* z: g- bResetDC 重设一个设备场景 & @( U L5 w b% x1 e, v( TResetPrinter 改变指定打印机的默认数据类型及文档设置 ) x# H2 l# k. w6 i4 h3 c; {% @ScheduleJob 提交一个要打印的作业 & Q2 y! K; \# |* Y9 [6 ` SetAbortProc 为Windows指定取消函数的地址 # {* L; Z7 a3 r+ A SetForm 为指定的表单设置信息 & {) U$ ` O" O- Y# ?5 n9 |SetJob 对一个打印作业的状态进行控制 2 p0 c2 X% Y: q2 v SetPrinter 对一台打印机的状态进行控制 7 k# S& L* e2 p3 Q$ q* r. wSetPrinterData 设置打印机的注册表配置信息 8 v9 w* I0 a" _StartDoc 开始一个打印作业 ; p: w4 [4 f W$ B& HStartDocPrinter 在后台打印的级别启动一个新文档 6 t: e% [9 C" x t# tStartPage 打印一个新页前要先调用这个函数 6 [0 i6 n& V, ?) m8 kStartPagePrinter 在打印作业中指定一个新页的开始 / G+ @) Y- y. {3 U. YWritePrinter 将发送目录中的数据写入打印机 7 U/ A/ P6 ~$ z3 }" i0 R' B* d' |

    回复

    使用道具 举报

    ilikenba 实名认证       

    1万

    主题

    48

    听众

    2万

    积分

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

    [LV.10]以坛为家III

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

    群组万里江山

    群组sas讨论小组

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

    群组C 语言讨论组

    群组Matlab讨论组

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

    主  题: 关于usb通讯方面的问题。请AKing大哥及相关高手来看看,万分感激!!! 4 n- N) r8 ~8 L3 A作  者: aiyu33 () 9 r2 m9 [3 B. C4 h6 _1 I4 d等  级: 4 N, H$ ~9 H" R. U0 _. A9 v信 誉 值: 100 8 C2 K+ Q/ i |- J' O3 u所属论坛: C++ Builder Windows SDK/API / T% u# T1 A1 @ 问题点数: 100 # M" _2 v/ t: h+ E- {回复次数: 12 4 O( \& E6 L* O' B 发表时间: 2003-12-16 20:43:13 7 ?6 I' L4 g% F" R, Q : B; R5 ?, m" O2 d8 U$ W& P1 c 2 @: f6 \, L! r

    最今我接到了开发pc和pocket pc通过usb口通讯的任务。这两个星期我参考了很多方面的资料,特别是AKing大哥写的一些文章。但我始终没有打通这个关口,我贴出我的代码请AKing大哥看看,现在很急,多谢。% i/ f0 d+ t/ V4 b' f4 {4 K2 x pc的os是windows2000professional ; E8 R8 t' x+ j) F, [pocket pc是hp ipaq 2210,os 是pocket pc2003。 * c2 U# T) j5 v8 B8 v我装了activesync3.7。我查看过了,这个activesync目录下有pocket pc的驱动程序。pc也能识别。: u0 x+ k5 v+ K9 b9 p 下面是我在pc上调用usb的代码。; {9 v+ ]; ^* r7 e5 W 下面的代码我能打开hidn类型的usb,但是就是不能打开pocket pc的usb。 9 ~' Y: j d5 a6 S# m" t//classGuid = {25dbce51-6c8f-4a72-8a6d-b54c2b4fc835}; s- u* q% O1 }2 d3 ` DEFINE_GUID(GUID_CLASS_PALM, # N; v, F: K7 m4 R( { 0x25dbce51, 0x6c8f, 0x4a72, 0x8a, 0x6d, 0xb5, 0x4c, 0x2b, , G% D# N* o7 K% A- l- f 0x4f, 0xc8, 0x35); 8 L, D3 t+ ^5 j, `GUID HidGuid = GUID_CLASS_PALM;# ]) `2 [# _; v$ l8 ^& `& ^9 p HANDLE Get_DeviceHandle( GUID* pGuid)6 t) V7 N" E4 K/ H { ( S, y2 m9 { _* x, y: j$ ]: Z $ G# B2 S0 \1 f" @& ~ HDEVINFO info = SetupDiGetClassDevs(pGuid, NULL, NULL, DIGCF_PRESENT | DIGCF_INTERFACEDEVICE);0 @4 E6 J" z) F4 t; Z6 J: b; u ; h7 N2 {7 S1 \: F7 ^ if(info==INVALID_HANDLE_VALUE)2 t" v) S- n; r1 R& V# _) k { ' r7 l5 m0 |! ?7 w' L printf("No HDEVINFO available for this GUID\n");, [+ i: J, e9 D3 `; E return NULL; & p5 p% o, T) x8 \9 P3 {$ [ }+ z7 G/ Y6 Z6 r: C SP_INTERFACE_DEVICE_DATA ifdata;1 `4 @. s+ G& z+ @4 g- e3 [ ifdata.cbSize = sizeof(ifdata);" T, k( s* e0 K* f6 D# F7 ~ //0000是我在注册表中找到的序号 5 R, m: V& G$ q1 ?+ O, t! ~+ p* G6 B if(!SetupDiEnumDeviceInterfaces(info, NULL, pGuid, 0000, &ifdata)) " [ J- l% k. x( e {# I+ O/ {3 Q( Z" t! H% E printf("No SP_INTERFACE_DEVICE_DATA available for this GUID instance %d \n", instance+1);7 F0 s3 H4 o& `( X; B& C/ L. ? SetupDiDestroyDeviceInfoList(info); 5 e' P$ X6 Q9 A! f; j return NULL; ) a3 U; l5 ~. ]! x+ \# \& m }

    // Get size of symbolic link name * x; {# f9 q8 G+ V7 ~ h DWORD ReqLen; " |# g) Z$ P# d+ ~1 p& j : L$ @2 e. r, K7 f5 u: O SetupDiGetDeviceInterfaceDetail(info, &ifdata, NULL, 0, &ReqLen, NULL); 9 A1 ?" l) |5 Q- A. M * B- I% U3 {: x8 {5 @ PSP_INTERFACE_DEVICE_DETAIL_DATA ifDetail = (PSP_INTERFACE_DEVICE_DETAIL_DATA)(new char[ReqLen]); 9 j/ T- O- B! t1 c. s4 j' S . _/ [# M! K' j6 G+ L if( ifDetail==NULL), s) E: d' O5 J$ J: ` {7 W& `% l! C3 a* X* C6 k SetupDiDestroyDeviceInfoList(info); 3 X* }" [: j: I8 S+ U, U8 ~ return NULL; + @1 I; m" B. ~8 J& x3 p+ \, N X }

    // Get symbolic link name' G4 Y* H9 u) k ifDetail->cbSize = sizeof(SP_INTERFACE_DEVICE_DETAIL_DATA);/ o) Q& a( O; C& o+ o & D) D7 ?( C+ p+ \" b# P3 u if( !SetupDiGetDeviceInterfaceDetail(info, &ifdata, ifDetail, ReqLen, NULL, NULL)) `' O1 C9 {4 [7 |) b* | {' g { 7 U L- Z- z6 o8 j SetupDiDestroyDeviceInfoList(info);; P( h$ g, h8 I$ {6 }' \- r delete ifDetail;8 T; E" N( G0 j: I return NULL; , P) H; h) s* D7 Y) ^ }

    printf("Symbolic link is %s\n",ifDetail->DevicePath); 7 C7 r2 }$ a5 C6 p! {$ q9 A7 _

    /*\\?\\usb#vid_03f0&pid_1016#5&1bc41f6c&0&1#{25DBCE51-6C8F-4A72-8A6D-B54C2B4FC835}这是ifDetail->DevicePath的内容*/& ~& W! p9 K; s) }% _0 j* M // Open file 8 F) @: b' t/ s9 a6 H) k5 v/ T" F) D//前面都很正常但就是下面始终得出一个无效的句柄,我也就无法开展下一步的工作. ' C! t" y: J& m" d( J HANDLE pDevice = CreateFile( / K! ~+ ]# x1 t5 D7 ? ifDetail->DevicePath, $ g/ Q* b2 a8 u: }, Q9 y: j GENERIC_READ | GENERIC_WRITE, 8 [/ Z7 H5 ]; M0 z FILE_SHARE_READ | FILE_SHARE_WRITE, 8 O2 ]! o# D: D& f! } NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); 3 P$ @4 u: @; F* B( L / d: }, F( s( S- } E* r! _5 m( S if( pDevice==INVALID_HANDLE_VALUE) pDevice = NULL;; x/ f/ I+ `, `, s9 d% s SetupDiDestroyDeviceInfoList(info); 7 k' P& Q3 R$ C 1 O n2 G7 j( F+ ~0 w9 M return pDevice; # Y" I* W0 V n0 u" q( x1 ^}# M. u: u, M% X4 A 再次感谢关注这个问题的人们。

    , t- D0 Y4 C3 F. b2 M, j; Z " d+ p+ p1 R% P2 S 0 N0 e5 c6 b' H; Z3 @: O" t* Y3 S 回复人: constantine(飘遥的安吉儿) ( ) 信誉:101 2003-12-16 21:23:57 得分:0 - y) p- i7 D. j: |! U# _ 3 A/ h" G" N3 w; b: s ) Z ^* F) Z4 o" y3 B2 @% `1 a 9 K0 ]8 F* e) Estudy

    & P' U# t+ w5 w" c % D9 P. O( U# aTop # g. ]5 r$ a+ i4 {# G- I6 S5 V7 M+ m+ { # O. `3 j# D/ b5 d6 D 回复人: wenyongjie(一个想成为大鸟的小菜鸟) ( ) 信誉:95 2003-12-16 22:28:46 得分:0 0 @8 r" w' E/ ~, `: ` V8 w, U! |# \* {+ G4 x 3 Z; y( d* B: u& X% N/ O2 } ' v9 a, A3 d: o! p6 F" M只有学习的份

    / \$ ?* D) M3 B% T, i% s. @ 2 \5 X$ `& R, w ]6 G% n Top ! C# ?! N+ F: _& B1 v 7 V/ w% ]$ w9 O& d4 ^9 F: C5 e 回复人: HUANG_JH(保卫钓鱼岛) ( ) 信誉:115 2003-12-17 9:50:41 得分:10 # o. p) C0 g+ o) h8 t* v/ R * |( f4 Z6 w; a * Z! R, d2 b0 y m% U( ]2 A) S' e - Z2 E! o9 r9 [) I& C/ r不知道有没有用!

    /////////////////////////////////////////////////////////////// ( b: R. Q6 N7 b' u% L' X' H// HW9911 evaluation board software Rev. 1.0# q# ?1 D ]$ a1 o4 C* j) R) n: A // program by Liu Ding, Bei Jing HEAD Elec.) T4 t' m. Z2 e/ J$ E ? // this is the main program for the HW9911 USB device evaluation board % d6 Z! m" a, L1 m5 C& y// it illustrate the basical read/write process of HW9911 4 N# x& n5 n/ a' ^5 h// by three examples: 3 h' E/ H" c% d- }// 1. write datas to ram on the evaluation board & K: ^# |$ n, @; G# J/ h// 2. read the datas from the ram on the board5 w7 g% R: C3 q; S& f4 y // 3. send datas through RS-232 serial prot on the board; M# {- C* m% x6 W // - R' r9 e" p& c // the whole project are build with MSVC 6.06 T/ g6 J# {, g5 H, J7 y // and tested on windows 98 platform. b( u {& s" b9 {. N! X //( B# B8 _; }1 R5 A, d // notes: you can use hyper terminal to reaceive datas form RS232 port, I$ h7 E: v6 W2 `0 F l2 A // 0 X% r4 r# G, ?/ X6 i! E// this software are designed by Liu Ding 2 r0 w0 E' w$ S* m$ m! _5 Q9 {// if you meet any problems, pls contact by email:* _* |5 i1 N' k8 q5 x& O& K( H, v // hugehard@263.net+ }: S% |6 A& e8 v' J7 a9 Y // or contact HEAD Co. by Tel 86-10-87312497; Y8 l) a' a9 \( N // or by fax: 86-10-87312495! V9 r% p; V3 E ///////////////////////////////////////////////////////////////

    #include "hwdll.h"& S9 g+ ?+ Z: `7 H; p4 l% G" { #include "stdafx.h" $ ?# K9 q% [' H0 n, t: v6 ?$ S ~#include <stdio.h> 9 N. U- n: S5 u" A9 F3 O' U#include <windows.h>. u6 Z I9 v2 I& @ #include <memory.h> ) c2 ?8 Y& j; A% _1 r#include <DEVIOCTL.H> ) u. [! S+ ?5 J#include <stdlib.h> : ~+ O- F2 z" _+ ^5 l- }#include <conio.h>7 c* l% g* j4 y. x. R3 @ #include "hw9911.h" }- ^0 _5 L Z, c( H #include "test9911.h"

    ' K3 Q# w8 K) q) F* h/ }: N int main()$ L/ z- w, z# B7 I8 {( m6 C { ( M( N3 s( H+ z: u0 R% x int hOpen=FALSE;* [% B+ O' o# X" b1 H) m int hCommandLength=32;& y2 r, }" t: Y int hDataLength=64;2 G" j8 d- j0 U) X( j. v; v ]4 c. D. H int i,VertAddr=0,HorAddr=0; : n: i* d& F1 s8 i/ K int addr,TotalLen;9 Y& ~& D* S3 L3 } USC StAddrH=0,StAddrL=0;! j4 z0 A7 B; w: e X# x5 M USC DataLenH,DataLenL;; M& W# Z4 |+ s' F# E z& c- V USC *hDataBuffer,*hCommandBuffer;' g; }2 a0 l$ s v0 F& x; n USC ch1=0x61; & d9 l5 j9 V! R1 q( n/ N HANDLE hDeviceHandle; ' \. P8 k4 c% n, g5 c+ c2 r 6 d& s% I6 L$ R( n+ d printf("************************************************\n"); ; r" v- G: L! M; z$ d, o0 S$ x: A printf("*******HW9911 USB DEVELOPMENT BOARD*************\n");8 y1 ^# K( j% I! i! K printf("************************************************\n\n"); B' Q1 g: y& M" q! W! D' b ]) Q printf("now press any key to open board\n");2 F& W5 L9 y) z$ p4 ~! ~- T getch();

    /********* call hDeviceOpen in hwdll.dll to open the board***/ : f2 A: S, D2 @//hOpenDevice 说明: G9 }% ^; {6 t, R// BOOL hOpenDevice(HANDLE *DeviceHandle) ' S$ k- ?5 [1 X$ g8 }$ D// 作用:打开设备- N3 w3 Y6 i0 g7 A) R! M // 参数说明:) ?; v1 l2 Y2 b' S% J+ | // DeviceHandle:设备句柄4 a$ U. n( b& i& L7 x // 返回值:9 f) F' D& z+ o$ X // 设备打开成功返回 TRUE,失败则返回FALSE# {# w1 w; d1 s- `& C if( (hOpen = hOpenDevice( &hDeviceHandle ))==FALSE) & ~5 D* D2 `& T { 0 l* b' j% g( f6 o: |1 q! i7 d! } printf("can't open device\n");) G/ j9 H6 z; j) {* i6 ~& A printf("press any key to exit\n"); 9 Y- ?2 O( |8 l9 `5 N& N/ h$ c getch(); ! A+ e1 M! R3 G return 0; & i9 Y6 @( A o6 U1 m } ) v# n+ y2 N2 H" P2 U- F/ d/ H else , {" r$ g* ~3 d+ ?6 c: N2 D printf("\nCongratulations! device opened!\n\n");

    /****** build and send command **********/3 G& y+ c$ x! c I3 g; p7 Y; y printf("how many bytes do you want to access?");7 ^& }& v0 z2 H) ] scanf("%x",&TotalLen); 4 ?/ j. e* w0 o' d# ^, p, }: { while(TotalLen > 0x7fff) : D2 o' h; u$ L. W a8 m { v. ~8 ]0 z" T5 ?9 `- }6 x printf("pls input a hex data less than 08000\n");: _& c* h, O- h* i* j scanf("%x",&TotalLen); 0 X1 i, |9 A. D) [- B } ; l- V+ ]* Z: X# ^0 N DataLenH=(USC)(TotalLen/0x100); //data length high bytes8 v1 O- y, K. i- N9 U DataLenL=(USC)(TotalLen%0x100); //data length low bytes

    printf("************************************************\n");+ d2 T" ^: v* H: ^6 c0 e printf("now program will write datas to ram on board\n");% n( P( w6 Q% r! k& w0 [" B# [7 _ printf("total bytes of datas is %x\n",TotalLen); 9 ]5 a# a4 |5 i2 J; \4 ] printf("press any key to continue\n\n");" o( y) P- L# k$ i" s getch();& {- w! m7 b+ P j /***************************************************************** , ^2 n4 k) j* V ^, Y now will build a write command packet ! k8 s* T/ U; c, ] with the first byte is 'w'." p9 D; P! A$ ^% I and the following bytes are: K8 N0 Q. J e* y& Z/ c) C start ram address byte high, start ram address byte low," V0 r# q* q2 {' o+ _. b$ f datalength byte high, data length byte low.; a- P) z" Y1 V8 p& n/ R this packet will send to device through WritePipe1," f+ t N) m: A5 C7 b. J which is endpoint 2 of HW9911. 1 t8 R6 J# ?2 e$ A5 z* I- o when the device receive this command packet,) Q) c: ?* r# ` it will write TotalLen bytes data to Ram on the board 1 Y) M% U. N9 r% J0 B; f8 A******************************************************************/

    1 f# S& j: M G% W8 A) @8 @ hCommandBuffer=(USC *)malloc(hCommandLength);5 u! ^ {4 ~3 ~* b2 A hDataBuffer=(USC *)malloc(hDataLength);; z V* M$ T1 [; w4 d hCommandBuffer[0] = 'w'; //read command4 |8 ~) z6 F, y* \; G: {! s5 T hCommandBuffer[1] = StAddrH; & t- ]& |6 y/ ]' K. t) F9 K hCommandBuffer[2] = StAddrL; ' W$ F0 v$ @9 K5 l- [ hCommandBuffer[3] = DataLenH;+ v% d4 T5 |# `1 O. R+ W hCommandBuffer[4] = DataLenL;

    /* call hUSBIO() in hwdll.dll to send command packet to device*/ v' A8 X* C* L w0 s // hUSBIO 说明: & k5 R6 o, [8 t; ]* X4 v// BOOL hOpenDevice(HANDLE *DeviceHandle,+ d& Z4 Y" R, P$ s% u3 U // unsigned char *IOBuffer, " V9 Y$ O1 W2 N9 k5 D2 E/ N// int BufferLength, $ M; l D; \% `. g3 Y// int PipeNumber,. F8 v3 Z# ~! |5 ]- h5 U) t6 T // int Action) ; ?, J$ p% y9 t& C1 O// 作用:设备读写 + T9 h3 C1 n$ S- u3 f7 s5 _7 t// 参数说明: 7 u- u4 T0 g; [4 K4 b9 B// DeviceHandle:设备句柄9 _' y1 k/ m1 e' ^ // IOBuffer: 指向要传送的数据指针 ; e3 a0 L. [; o// BufferLength: 数据包长度 ( A' u: q" w3 x4 c! `. L, p2 Z// 对于发送缓存1、2和接收缓存1、2,BufferLength必须小于或等于32 % y0 D r$ G% N8 H// 对于发送缓存3和接收缓存3,BufferLength必须小于或等于64 ( d/ _, S9 I' C9 }( f. ]" F; H// PipeNumber: 通道号; L% n& D/ k; D! v; R // 发送缓存1:PipeNumber=0;3 }3 c$ r1 r7 {0 z // 接收缓存1:PipeNumber=1;: V$ O: S$ W# u+ f1 J6 @& R/ p // 发送缓存3:PipeNumber=2;& ?% u/ i" b6 V5 j1 U* K // 接收缓存3:PipeNumber=3; 5 m2 Z, j- L5 p, `- C9 b// Action: 读写标志。TRUE代表从设备读数据到主机& N' Z0 I' K0 C) } // FALSE代表从主机发送数据到设备 0 f: w) p# n0 K// 操作接收缓存,Action必须为FALSE ( E" ^; @* Q# ]4 R6 v: j; r6 r! Y" {// 操作发送缓存,Action必须为TRUE* T9 F7 X+ L' T3 ~: } // 返回值:9 w% O# x$ b/ v5 ?, _* b // 操作成功返回TRUE,失败返回FALSE

    if ( hUSBIO( &hDeviceHandle, ! O" x: [4 z$ } hCommandBuffer,3 ~* L, H8 @# o1 \+ G. J6 k hCommandLength, $ a% _- \/ k/ c/ F, S hWritePipe1,1 G; R7 p: S1 ?6 r. x9 K FALSE) == TRUE)) m& T% C; E$ m* D9 a {/ [4 E- o( D1 Q1 o2 B) b9 ~ printf("command 'w' writed to board\n");( y, l8 G6 L, D! l1 r& \1 A. A- p, N printf("now press any key to write datas to ram\n"); " j* V0 k# a9 o! u% k getch();6 k7 c% D2 J+ _) O/ g }6 w# |# a( ^6 Q8 u else4 F4 J, x( T0 O3 V' A printf("data can't write to device\n");

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

    printf(" ");. ]( W5 ]& d8 M0 T( V; S1 o for(VertAddr=0;VertAddr<=0xf;VertAddr++) 7 ~ f$ P! u3 R5 o0 k. l printf("%02x ",VertAddr);# u- @1 z! C* f printf("\n"); 8 F8 x( b$ a) C0 a: n addr=0; ! Y0 N1 i8 @$ A1 ], v8 t while (addr<TotalLen) $ H- f4 m$ F. @* B, a { + k5 _5 r9 Q% ]2 D8 S4 m if (addr+hDataLength > TotalLen)1 A- M8 g# \/ W' C% \% J! D hDataLength = TotalLen-addr; # h; T6 k0 D8 X# Y3 m for(i=0;i<hDataLength;i++) # A$ O1 o3 a3 N' s0 [" K {) B. _) r* Z3 ?& { hDataBuffer=ch1++; : T4 g' }3 b: Y; k, d+ Q* P if (ch1 > 0x80) 7 ^3 _- c1 i5 ~5 d3 ] e! l* I) c ch1 = 0x61;3 O6 }& t2 L2 U" M( V } # m/ J! g' q9 J, V/* call hUSBIO to write datas to write pipe3, which ) z/ g9 ~9 P/ T! i2 O% C( I% k is endoint 6 of HW9911*/

    if ( hUSBIO( &hDeviceHandle,1 N' i) E$ R& m4 z2 R hDataBuffer, * H! _% [$ ?( f hDataLength, 8 Y" f, i$ X8 m. i/ O; w; ? hWritePipe3, 2 S: b$ Q% ]6 l2 ` FALSE) == TRUE) //FALSE means Write operate9 n) N) V. e% j( O0 f% K4 y { " C; n$ T4 T# [ for(i=0;i<hDataLength;i++) ! i6 [* t" s% N; B: U { 5 M7 U V' E" ~9 W' v, B/* print format control */ : j5 Y7 N2 _" C* R5 \" v if(i % 16 == 0) + C: f' U. K4 x1 d3 Z: `, `/ } { : p9 H' J( p+ U/ N* G6 s7 u9 d' P printf("\n%04x ",HorAddr); ( n& \! G" _* {! U* w8 U _ HorAddr=HorAddr+16; [: I5 z$ Q& D/ L3 u6 n; M } / i& ^" M. X4 ^8 L! Q' |% |+ Q) n7 O printf("%02x ",(USC)hDataBuffer);- O: w2 w- |8 _' c3 P: K1 O }* c1 Q* G0 V% q$ I% B# c addr=addr+hDataLength; 8 ^; W6 D( x- [% d }2 X- g, p, s4 P& E+ [7 f- [ else8 C( \! a |& ?2 V" @: u- c' m! q- { { ; f; H1 P0 N, k- w/ v printf("can't write to board\n"); ; Y1 g2 V4 r7 w5 ?# h exit(0); ! v2 r8 W" B) O } ' d ~6 r% B: ~ } 5 X0 {! A7 \6 Q4 B! [ printf("\n\nTotal%x bytes write to ram OK\n\n",TotalLen);

    . |9 H: P' I$ x: u2 L 5 P- X2 K% s. {) ~+ ^" E/ p7 @# M4 \Top q( e1 A- N4 ^6 D % W+ Z; X1 F6 u& N* w, r1 O8 L 回复人: HUANG_JH(保卫钓鱼岛) ( ) 信誉:115 2003-12-17 9:50:51 得分:0 9 @$ g' W& A3 E6 K/ `* y2 P$ l $ b( K5 |$ c9 G" P+ e% [ " o+ j$ J5 `, e" ~

    /*****************************************************************% U* m, _: H, m g- G4 M. X now will build a read command packet + p& P" y0 W2 O4 w8 B with the first byte is 'R'.- e; F1 x9 L# n- D and the following bytes are:% p+ m/ ], @ ]9 X start ram address byte high, start ram address byte low,1 [5 \3 J- |1 R, P datalength byte high, data length byte low.& M( ~4 e/ Q2 ?- ? this packet will send to device through WritePipe1,; M' l8 `3 |2 a which is endpoint 2 of HW9911.4 R0 V6 J4 [! ]' Q8 B! m# d* @ when the device receive this command packet, n$ \# R& f) _0 M, ~+ o( Z7 Y it will read TotalLen bytes data from Ram on the board & L8 U+ B% b6 k; O+ y: a0 w******************************************************************/

    printf("************************************************\n");+ F7 R6 y# W, W printf("now program will read datas from ram on board\n");9 {4 \" {+ a& j; t* g4 S5 Y printf("total bytes of datas is %x\n",TotalLen);% Q A; ~' {) |3 X printf("press any key to continue\n\n"); 1 H& [; d* w5 H1 x% s getch();' G/ y- _4 @" f9 u4 L$ @ w hDataLength=64;9 s3 C' G) a9 P* i: V hCommandBuffer[0] = 'r'; //read command, k2 D* m+ T. c& V4 A- v6 S$ p5 z hCommandBuffer[1] = StAddrH; % A$ D- u( }& t m: o hCommandBuffer[2] = StAddrL; . ^7 e6 I$ s! Z, y4 _$ _ hCommandBuffer[3] = DataLenH;4 h) [4 O" e6 ^9 ~1 | hCommandBuffer[4] = DataLenL; ' v( z/ O5 {, c /* call hUSBIO to send packet */8 \5 I& u2 X( W) Y0 S# Y( R" y if ( hUSBIO( &hDeviceHandle, 2 l$ R+ u7 @* o# ~$ P: u3 ~: z hCommandBuffer, 1 Z1 Y; U. r: c hCommandLength,! U( S( E& M3 i* y9 g hWritePipe1, : A. H% `% | d9 E$ d& N( C$ q0 d FALSE) == TRUE) 6 H$ @- [7 G0 i0 u" I { m" y& S8 A _" z6 z2 W printf("command 'r' writed to board\n");0 C3 D/ b1 m' S printf("now press any key to read datas from ram\n\n"); d9 F, n. e8 R: q R getch();: m B/ @( M! E( A, }2 [0 g- r }7 @, g9 m5 `1 x9 b# F+ e1 Y else# {3 Q2 H+ A3 T5 H& L printf("data can't write to device\n");

    /******** read ram data form board **********/) ?3 i n! z$ W% J* q printf(" ");+ ^& p3 o! S8 Z+ B9 U/ _3 C: w1 R0 } for(VertAddr=0;VertAddr<=0xf;VertAddr++)% \5 c# S$ q, K3 ^ printf("%02x ",VertAddr);; q+ o3 P5 J. R9 {" k! W5 N printf("\n"); ! O$ m. m9 ]. C0 ?! M, a addr=0;# d. V: }0 }6 b HorAddr=0;2 p0 z- f$ s# J0 V& v/ H. q5 d while (addr<TotalLen)+ o3 J+ ^ ~& T0 e8 |5 `, ^ { ( G U' i, Y6 f( l# ]3 ?- K& [ if (addr+hDataLength > TotalLen)0 S( f) D- C. q, W2 m hDataLength = TotalLen-addr;# |) i! |$ c0 m5 V& O /* call hUSBIO to read datas from board */ ; w# j+ R0 R% n3 b: c if ( hUSBIO( &hDeviceHandle, " h- D' h" z- L- r hDataBuffer,2 B: _) g7 P! N. h hDataLength,3 x5 P# [, ^0 A8 b; H. q hReadPipe3, % G. I. s( g+ s4 q9 v TRUE) == TRUE) //TRUE means Read Operate% N& P4 N" [0 o2 F' K! J {4 q4 u0 s! ~! S* [6 [/ \! c for(i=0;i<hDataLength;i++) & l# X7 g( Q( Z* z6 v { # l0 h+ e2 c$ u0 x1 j/* print format control */1 ?7 I8 N; h2 b1 m, M5 m( E if(i % 16 == 0) ) q- r% }/ C! d, _6 I0 n {/ U7 Y4 {- h: }# b% X6 O printf("\n%04x ",HorAddr); : e; G- M& @* A9 W. Y4 n; s HorAddr=HorAddr+16;- k: n( c2 G3 u; f0 b1 N8 p } ! z! u/ B7 G( u. [( ^1 V6 b0 |7 p printf("%02x ",(USC)hDataBuffer);' Q5 k, V9 E8 u$ u! b } 7 O0 q* r) L, p% L2 `* q addr=addr+hDataLength; W; U/ E2 p& C) T, e3 T6 I" w } 9 s9 I* H3 O# |) A4 A else l1 R- [/ n( Y4 q, C8 F9 l { ( H# s) u' s C( D" ^ printf("can't read from board\n");# G, M4 K* x5 ~) C exit(0);: P$ G3 S |1 A }; i1 C5 G0 H7 Q+ p }/ P. O5 f) y9 e3 s5 w printf("\n\n");( t* ^$ Y1 y! l printf("%x bytes read from ram OK\n\n",TotalLen);

    /*****************************************************/5 o8 z, C: }+ T6 }" p, S# q /* process rs232 test */ ) o% |- h @* o7 i/ @/* the first byte in this packet is command 's' */9 d: \2 H; P6 c% B /* and the following 2 bytes are used to set */ * e9 `2 p/ j b+ ]3 t$ n/* the baud rate of 8051 */. [/ l0 b+ s6 J! u/ [6 M /* they will be write to TH1 and TL1 respectively*/7 \! k# _9 |9 e8 ]6 T" Z /* the following bytes are datas will be */ ' V8 y$ M# E2 @: ?6 _7 x; Z/* send through RS232 serial poart */ . l9 G7 I1 l. x) q( B/*****************************************************/5 Q% j8 {$ Q6 N' {- v0 z printf("\npress any key to process RS232 Test\n"); 9 [, V2 f( T! h$ R getch();$ v. Q& N) L- B' e' K. y0 ? ( Y4 _$ f7 I8 i, p8 k9 o/ B USC TH1,TL1; ) s1 P0 ? Z3 W$ r% m& r$ m char hStr[30];3 T$ g- t5 D# m0 }' ]; Y7 b- V4 a TH1=(USC)(BD9600/0x100); ! S! x k/ l7 D' I7 s' O- r3 T TL1=(USC)(BD9600%0x100);# Z) ^4 W. U# Q& z8 N hCommandBuffer[0] = 's'; //read command " R% e$ i% F- G. ~: [2 A7 d1 N hCommandBuffer[1] = TH1; $ N$ o l+ ~; {) w' @( c4 p hCommandBuffer[2] = TL1; //start address is 0x0000

    strcpy(hStr, "Hi, dear HW9911 consumers! ");6 s0 a* z3 J" e) M h printf("Hi, dear HW9911 consumers! ");4 ]5 U* l1 @) N; Q memcpy(&(hCommandBuffer[3]),hStr,27);

    if ( hUSBIO( &hDeviceHandle, 0 d3 B: Q' R. } hCommandBuffer, 6 Y6 p, c7 L' U5 ] 30,, }" i% I0 W7 O& s x hWritePipe1," }! l" H) q4 ?$ \. W0 i FALSE) == FALSE)6 _( e' P5 w: ? { 4 N- p& Z2 T; ^/ ] printf("can't write datas to RS232\n"); $ ]- u& P& v$ o4 o# C exit(0); 4 e* v( c B4 M# Y# A }

    strcpy(hStr, "I'm HW9911 Evaluation Board, "); - T& a* t/ s6 F: z: b, H* T$ A printf("I'm HW9911 Evaluation Board, ");+ J: H" S b! ^. S" j memcpy(&(hCommandBuffer[3]),hStr,29); 8 \5 e3 J4 l2 @$ {9 o" T9 M / K+ D e4 X {/ V4 r2 j# x if ( hUSBIO( &hDeviceHandle, * v. R+ S( Y; ]- k# `1 j5 |1 h' M6 s hCommandBuffer, ) i1 r, G$ J4 W 32, , x! G6 D- a4 Q0 y2 [% v7 u hWritePipe1,; x# n8 M+ ^% a: L9 I( l& z FALSE) == FALSE) , j* b% ]8 g3 q+ j9 W9 x- s( A {: ^9 J+ O7 E* [& j. e printf("can't write datas to RS232\n"); - \6 n( _9 ^+ D; v n exit(0); " H- }3 }9 n" l6 G: [ }

    strcpy(hStr, "thanks for purchasing me, ");6 l Y) l- G- R printf("thanks for purchasing me, "); ; t6 q6 T+ g7 y( S memcpy(&(hCommandBuffer[3]),hStr,26);3 a, r! t( X& f. ?3 a+ g0 C: f % e% B2 n8 v E3 a3 h; `' E2 c' y if ( hUSBIO( &hDeviceHandle, ( e. {6 G) V0 | hCommandBuffer,# V6 X) _1 N/ T3 y% A3 P* Z n 29,9 j2 y! Z, x# O( ?0 T hWritePipe1, z) u0 N7 A3 w7 r6 \ FALSE) == FALSE)* b5 a# j( U: R: l { 2 T$ D: {, Y6 r% b/ q+ d- R printf("can't write datas to RS232\n"); 0 A& r9 r& h8 {/ h2 Z `5 m exit(0);3 w( q: ?! ^9 [/ W: _: I- i. \ } b) n: q ]" k) o& f $ A7 v1 W+ I- u5 p: e strcpy(hStr, "If you meet some problems, "); 6 F5 y4 N/ v) y) Q" Z% i3 b printf(hStr, "If you meet some problems, ");! P$ {$ V3 W( D0 N* w" W# X memcpy(&(hCommandBuffer[3]),hStr,27);6 P. S, H! o* C" l 3 o9 |0 `3 |/ W) `7 | if ( hUSBIO( &hDeviceHandle, & e; u+ P( C5 _+ L$ K7 e7 U3 Q hCommandBuffer, 0 ^& o+ S- O5 Y2 x l' p. q 30,+ ], l: ?2 | [4 k3 [7 K hWritePipe1,: i, p- J; g) E* A! A0 c FALSE) == FALSE)% U+ V. X6 e+ Q. H* Z {; |3 ?6 w+ j! h$ Z printf("can't write datas to RS232\n");, f5 Y- a4 {* w+ W. ^7 p$ h9 V |' G! } exit(0); % O% F8 h5 S7 ~, T }

    strcpy(hStr, "pls contact my designer "); ( Q1 }2 M& p. ~ printf("pls contact my designer ");3 d$ a# L" [* n2 s" J" f memcpy(&(hCommandBuffer[3]),hStr,24);) E+ v( \1 W* x" Y0 _ 0 S2 _5 \& H& Q$ S; W9 | if ( hUSBIO( &hDeviceHandle,1 v0 ?$ w6 C. Z) W: ~$ u0 ~( O hCommandBuffer, . S k8 }2 W6 I ]1 B% P/ P) g6 h 27, ( k( q+ A4 b) `( x) z+ t hWritePipe1, h9 j2 D9 T V' R$ n3 c FALSE) == FALSE) 4 D! A" c; z3 C' G/ O% J& K1 [ { . v1 ~1 }; o/ z- C/ [( u) {* H printf("can't write datas to RS232\n"); e5 [3 t$ o! |- B( i* H( x2 Q4 j8 m exit(0);; ?% t O0 L5 |, E }

    strcpy(hStr, "by email: hugehard@263.net."); . u% s- T# N/ Q: } printf("by email: hugehard@263.net.\n");: ~# Y% e) v0 }' y1 B( _6 Q/ @* @ memcpy(&(hCommandBuffer[3]),hStr,27);4 o- C5 n; a# N, x; F4 b. ^4 A, l% C % y, a6 [) b5 ? if ( hUSBIO( &hDeviceHandle,& P9 |6 j+ v& E- ?4 W/ B0 a2 v hCommandBuffer, , w- X- q. W' X5 L" D6 S/ k9 Q% r 30,/ |# r; N/ }* c" c. d1 P+ U hWritePipe1, 4 U; q4 b+ q& c FALSE) == FALSE)1 R& f$ K" \3 l; L9 ]# Q {: G; O* E* ?5 T' o) G7 b a+ _ printf("can't write datas to RS232\n"); ( n5 J0 M" U$ _. l$ ^! d( m exit(0);; o' M4 C) [( T, k; l u0 M }3 J' I% q6 _+ X) O /********* call hDeviceOpen in hwdll.dll to open the board***/ 5 k9 ~) W7 j! W2 v// hCloseDevice 说明:; J' u# M; V L' Y" }8 s // BOOL hCloseDevice(HANDLE *DeviceHandle) k, ^& {" o$ b3 A// 作用:关闭设备) B" q+ d% g- O2 h! P; t7 e8 i // 参数说明: 0 M1 T* w& q7 {3 k9 V! C$ ~2 L// DeviceHandle:设备句柄$ S! Y/ v$ J d& H! ~$ Z2 m$ _. m // 返回值: ! B# d" i& }4 n+ j// 设备关闭成功返回 TRUE,失败则返回FALSE % j; ^2 z- L2 U1 T8 \$ e& m if( (hOpen = hCloseDevice( &hDeviceHandle ))==FALSE) ; i7 ~% O' l# B7 f5 O+ \ {* ]" }0 F* _2 @; ? printf("can't open device\n");. g3 }1 w" Q# j# E: Y printf("press any key to exit\n"); , |8 \# T% T6 ] v+ B$ r+ w4 Z getch(); 8 S& m) N& ^- X3 l. D9 ?1 N return 0;4 y/ M# {% t) j } ! e2 e" u5 m+ u- n# {" _1 T else 1 z+ ~8 ^; a5 {4 I# K* F/ j printf("device closed\n");

    printf("press any key to exit the program\n");' w+ |' p( |$ _$ t1 A9 O free(hDataBuffer);# p2 \7 S9 }$ h$ s& R4 y! }( Q free(hCommandBuffer); ! I- M$ w! ^5 @7 h! A) _0 K% B getch();: ]' q/ Y, u* ^, K C$ b4 W' V return 0;+ N+ n; l5 A" d4 @, c2 w2 D }

    $ }% x+ c9 V- g : i! }) m+ O I1 e5 X( W$ E. X% D5 I n / x& |% @% o% {/ _; PTop " j: ?: ~5 e; S# P$ X * B, V: j1 {# K. D* U: m% U 回复人: aiyu33() ( ) 信誉:100 2003-12-17 11:41:24 得分:0 % |4 U% M0 @, M* G+ G & T) M; B h7 z0 c9 H ; o/ l- B! _3 v, q# n ' K. C# h* n8 K9 b2 Dupupupupupupup

    0 Z$ H8 R: a3 S& A! m; s 6 C+ H" D- S- D6 PTop ; B* _! X+ W+ b; n5 K % a$ K" _' l! }9 N' ~ 回复人: kingcaiyao(AKing) ( ) 信誉:110 2003-12-17 12:53:39 得分:0 5 u! z# s O6 M+ b' ^# T 0 }% E2 o5 N' s1 } S/ l6 M* y# \# S4 ? " M6 l0 p& a# \" n! G你开发的这种软件类似于Palm Desktop Software,负责Pocket与PC之间通讯,我建议你最好先写一个驱动,将USB口虚拟成一个串口,然后直接对串口操作会很方便的。我现在做的程序可能和你相似是一个CDMA模块,通过USB口与PC机连接,然后由驱动程序将它虚拟成一个串口,我的工作就是和这个虚拟的串口通讯。

    3 |( I$ h3 m1 \0 F2 q Z( F " ^+ s) U) H- _3 O! UTop : q* H' t1 G- G0 ?6 f+ `4 Y 6 j3 s2 H# v9 e2 D/ q 回复人: kingcaiyao(AKing) ( ) 信誉:110 2003-12-17 12:56:27 得分:0 2 Q1 y/ W% b q3 Q , }3 B/ q7 B$ i7 N2 F" P" K 0 g' J( r8 q( e$ f 7 c' N* o/ p1 QPocket与PC连接肯定有驱动的,如果驱动程序没有将Pocket虚拟成一个串口,你也可以直接通过设备GUID和设备序列号进行访问,详情你参见我专栏上的一篇文章。当然了,通过虚拟串口来访问设备肯定要方便,简单些。

    8 z6 l+ G O* [! p) B ) N/ b- @8 o" w9 B* T2 b- p Top 8 Z# k1 e% V! Q- M) A ( M, ?# |% @3 ?( C1 `; d 回复人: aiyu33() ( ) 信誉:100 2003-12-17 13:31:08 得分:0 # a) O0 G: m* ^$ A2 E: a3 ?& n0 g & q4 k8 I1 i, \; v8 F9 w: M) j 9 i& K. w/ v$ ?. |$ ~; C . I( V* P+ ?7 g 我得这款pocketpc默认只支持使用usb与pc相连的,而且activesync3.7就是使用usb传输数据的。如果我自己写驱动的话,不仅不熟悉而且很可能activesync3.7这个软件就使用不了。我只需要利用它的驱动。你的专栏上的那篇文章我也看了,我就是模仿你的写的代码,但就是到createfile这步就不行了,我的同事是用palm开发类似的程序,也是到这步就行不通了,是不是有其他的原因? V% Z/ G) {) d; F9 ?2 w3 I$ Q& P我还想问问如果驱动程序将pocket虚拟成串口,如何查看它的符号名呢?

    8 R; g/ }' h) \7 A, n / R) Q4 K& E+ M9 D% F 2 @1 C* {# I6 E$ {) N: f Top . D ]$ E* w6 t6 g 8 u" M: S) h! `- t& Z9 S+ r 回复人: kingcaiyao(AKing) ( ) 信誉:110 2003-12-17 16:53:17 得分:0 6 D& B' }& A2 J9 Q $ n% q/ _, @1 W - V9 ~3 }8 j- M8 Y4 q- k/ a 8 b: I; e& A( |, f2 [) z 假如将一个USB设备虚拟成串口的话,那么它的符号名可能是COM3,COM4,或COMn,这根据你当前PC机的配置而定 。它的符号名位于注册表中HKEY_LOCAL_MACHINE\CurrentControlSet中,你可以搜索注册表,另外在2000或以上的操作系统中,你可以到HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SerialComm中看到。

    + h: ]# H" i# t$ V& a! K + K) H* }% B3 r' g6 q3 r5 c* k" RTop + q) P" _. W+ d) ?' ^% b' v : H j- C5 A0 H- o6 c 回复人: kingcaiyao(AKing) ( ) 信誉:110 2003-12-17 16:55:33 得分:0 . o* y5 ^3 p+ E9 M 4 t1 Z# Z$ ?6 M! ~; H6 k& W ( H+ t1 ~* A* t. b " ^0 f0 c J, M% N) h# Q 我以前在一张贴子中详细回答了如何利用设备序列号和设备GUID来访问该设备,你可以搜索一下CSDN。你所说的CreateFile不能打通设备,你要查一下,你的符号名是否正确,包括设备序列号和设备GUID是否正确,设备GUID你可以从驱动程序的安装向导文件.inf中找到,设备序列号则需要你到注册表中去找。

    \% D1 p( M" ]# X: T + |+ k+ L6 ^3 r1 P& O7 L Top & S& k. t8 |% { p* P" B) S: [ 7 o! H6 k5 ~8 C1 T5 W 回复人: gyj_china(透明) ( ) 信誉:98 2003-12-17 18:15:30 得分:90 " {/ M8 [4 G8 f8 h* L+ `: l 3 P' h; Z0 ]1 G: |8 r( B- T 1 Y; Y. O& ?: d0 {; b 4 M: t" u$ x w6 j- P* @" J 没有星星不敢发言:(

    4 u5 H+ J6 B" [( m& V; N 7 d0 z- `- f! A1 FTop 2 v( [; p7 K6 z 8 @2 C, V3 p/ x3 I 回复人: aiyu33() ( ) 信誉:100 2003-12-19 18:27:28 得分:0 ( S1 l+ z" @, b" b7 j- q 2 `/ b2 k+ x- j$ v* P- p) o/ t - O% T) m& x' }6 D/ S5 N, c' H& T . @) Q& V8 u$ }- p9 I0 G不好意思,是因为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, 2025-5-5 16:20 , Processed in 2.756943 second(s), 99 queries .

    回顶部