QQ登录

只需要一步,快速开始

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

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

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

10

主题

1

听众

98

积分

升级  97.89%

该用户从未签到

新人进步奖

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

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

$ C& s: R, z( Q! c" L

我暈,看來這回死定了

4 `0 i6 S* k/ v, e. ^

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

M* `9 i* R5 F# z. |( F

老大救命哦

[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之打印函数:0 m6 s' L* m4 y2 v: Y$ Q AbortDoc 取消一份文档的打印 2 p H e/ y; f' l; x0 P' SAbortPrinter 删除与一台打印机关联在一起的缓冲文件 / v0 I/ `. W; fAddForm 为打印机的表单列表添加一个新表单 + K8 I7 x4 b1 G+ eAddJob 用于获取一个有效的路径名,以便用它为作业创建一个后台打印文件。它也会为作业分配一个作业编号 ; F' ^3 R# m0 s6 w AddMonitor 为系统添加一个打印机监视器 ( h3 _4 I$ Q' T. ?. J* k+ bAddPort 启动“添加端口”对话框,允许用户在系统可用端口列表中加入一个新端口 6 J2 L: R3 z& a4 a( t/ c AddPrinter 在系统中添加一台新打印机 $ I+ K# `* G4 ^AddPrinterConnection 连接指定的打印机 ( {- \, N+ S v2 V/ X9 A AddPrinterDriver 为指定的系统添加一个打印驱动程序 . h* f. G* O( x% ?8 R2 r8 }) ^AddPrintProcessor 为指定的系统添加一个打印处理器 m/ p: x1 O i! ^AddPrintProvidor 为系统添加一个打印供应商 : |( |( h: G5 K1 JAdvancedDocumentProperties 启动打印机文档设置对话框 : A: C; s' O7 j, ]7 E3 ^( z ClosePrinter 关闭一个打开的打印机对象 ; ~# Z: z% R+ ]9 D ConfigurePort 针对指定的端口,启动一个端口配置对话框 9 K v/ U$ N; n! \' x/ SConnectToPrinterDlg 启动连接打印机对话框,用它同访问网络的打印机连接 e! w6 f9 {* t W6 D( ` DeleteForm 从打印机可用表单列表中删除一个表单 ( e+ p' ?, p% B, T! A" jDeleteMonitor 删除指定的打印监视器 . s, c3 B( i2 y3 i7 HDeletePort 启动“删除端口”对话框,允许用户从当前系统删除一个端口 1 ?$ l( N8 x3 r: _" H' f DeletePrinter 将指定的打印机标志为从系统中删除 1 A3 [! d7 c' Z* n- P DeletePrinterConnection 删除与指定打印机的连接 # w6 X1 p" T; d" S, \9 s4 j& i4 uDeletePrinterDriver 从系统删除一个打印机驱动程序 5 N. H2 l( V! h( J$ ?DeletePrintProcessor 从指定系统删除一个打印处理器 a4 |" T+ M: h2 C DeletePrintProvidor 从系统中删除一个打印供应商 0 m$ E' J) Q) {& mDeviceCapabilities 利用这个函数可获得与一个设备的能力有关的信息 ( b3 M4 P( L6 x1 `5 z7 o7 R DocumentProperties 打印机配置控制函数 : o* z) [ I5 x; B) v$ ?% `0 j3 wEndDocAPI 结束一个成功的打印作业 V$ ^ L) |/ m. n" d% } EndDocPrinter 在后台打印程序的级别指定一个文档的结束 9 {3 [; Y& k6 x5 ^$ s+ LEndPage 用这个函数完成一个页面的打印,并准备设备场景,以便打印下一个页 W# B& Z9 F* jEndPagePrinter 指定一个页在打印作业中的结尾 9 {; i) o D8 N \) x- vEnumForms 枚举一台打印机可用的表单 ) |1 D- h( N) \6 z% C( V. dEnumJobs 枚举打印队列中的作业 , V. M. B" o) M/ H8 z% y EnumMonitors 枚举可用的打印监视器 2 v" f4 l1 j% C i% S EnumPorts 枚举一个系统可用的端口 ) W+ h0 A m" ?: s9 T2 b: vEnumPrinterDrivers 枚举指定系统中已安装的打印机驱动程序 / R2 O4 ~* S, l% n f+ K3 A8 lEnumPrinters 枚举系统中安装的打印机 - |% F& X4 X" x7 H9 {EnumPrintProcessorDatatypes 枚举由一个打印处理器支持的数据类型 ( G8 L% x5 g4 [; `" t. hEnumPrintProcessors 枚举系统中可用的打印处理器 0 p0 ^: @* H/ z- H3 E1 z Escape 设备控制函数 / `3 ^" E) E# _0 P9 H' i9 L5 E* DFindClosePrinterChangeNotification 关闭用FindFirstPrinterChangeNotification函数获取的一个打印机通告对象 * _) N2 u" Z. R1 B1 @- T# i) Q FindFirstPrinterChangeNotification 创建一个新的改变通告对象,以便我们注意打印机状态的各种变化 : F/ k" Y+ T: E. T5 H! W* r FindNextPrinterChangeNotification 用这个函数判断触发一次打印机改变通告信号的原因 4 a: q8 \5 S6 M% M6 Q3 ~6 h2 Z" A FreePrinterNotifyInfo 释放由FindNextPrinterChangeNotification函数分配的一个缓冲区 3 v2 c0 m# T# Z. Y# KGetForm 取得与指定表单有关的信息 3 d( e' N$ z9 W$ W: l GetJob 获取与指定作业有关的信息 2 Z' r( y5 k: E' c7 @ [1 AGetPrinter 取得与指定打印机有关的信息 ; u; l( G* z. xGetPrinterData 为打印机设置注册表配置信息 9 D; k% e/ f5 O+ i- DGetPrinterDriver 针对指定的打印机,获取与打印机驱动程序有关的信息 # v$ |2 E- ~; R4 [3 o0 O G GetPrinterDriverDirectory 判断指定系统中包含了打印机驱动程序的目录是什么 * E; _7 m/ r) f$ K4 k+ v GetPrintProcessorDirectory 判断指定系统中包含了打印机处理器驱动程序及文件的目录 ! O3 }6 C: L7 D$ d$ fOpenPrinter 打开指定的打印机,并获取打印机的句柄 & z9 s6 P3 d- EPrinterMessageBox 在拥有指定打印作业的系统上显示一个打印机出错消息框 - p& v8 y! b8 _7 q- IPrinterProperties 启动打印机属性对话框,以便对打印机进行配置 g# l, [: ~# d; z# S8 ^" QReadPrinter 从打印机读入数据 : c* G6 o/ q" L! _4 v) A( L6 _ ResetDC 重设一个设备场景 / Y3 ~' g* q% W2 o4 O" q0 d" aResetPrinter 改变指定打印机的默认数据类型及文档设置 ' X; j: b1 T+ K" N+ r/ k# y2 J ScheduleJob 提交一个要打印的作业 4 I; m g/ M. v, k1 q, e0 I( u+ ~SetAbortProc 为Windows指定取消函数的地址 6 |8 `0 O! o9 L' `0 I2 F! ZSetForm 为指定的表单设置信息 ' ^, E: G( M" p* {, Q1 J, fSetJob 对一个打印作业的状态进行控制 ; Q) S9 L- k. {( P0 B* n4 }9 w SetPrinter 对一台打印机的状态进行控制 5 @. C2 B# K8 Y6 n- p7 y: s* H! R& W SetPrinterData 设置打印机的注册表配置信息 * r; G6 [& [+ I StartDoc 开始一个打印作业 4 @9 C2 p5 }6 u8 n! g StartDocPrinter 在后台打印的级别启动一个新文档 $ T, j, ^, V4 r: T4 hStartPage 打印一个新页前要先调用这个函数 + D" X3 a+ v1 ^5 f, Y H StartPagePrinter 在打印作业中指定一个新页的开始 $ w K) M0 v& C- Y WritePrinter 将发送目录中的数据写入打印机 0 D& u: D3 _. ?' M/ H) n

    回复

    使用道具 举报

    ilikenba 实名认证       

    1万

    主题

    49

    听众

    2万

    积分

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

    [LV.10]以坛为家III

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

    群组万里江山

    群组sas讨论小组

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

    群组C 语言讨论组

    群组Matlab讨论组

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

    主  题: 关于usb通讯方面的问题。请AKing大哥及相关高手来看看,万分感激!!! % m+ N6 y- v; h4 Z& K! k- @9 Q 作  者: aiyu33 () ( H# o" W4 R9 Y0 k& {9 P5 K/ t+ e等  级: 6 T$ f6 T5 l8 E: ]3 o! [! H8 b' b信 誉 值: 100 ( F# O1 l: e( @5 d& t% Y所属论坛: C++ Builder Windows SDK/API ; q1 s( @$ w# Z5 x 问题点数: 100 ( e7 @3 T% m R 回复次数: 12 3 V- e$ C# V$ |+ |; @* U发表时间: 2003-12-16 20:43:13 ' R- s- G, d$ {" H% n ~% U: ~" ~8 H9 G% p, b3 t, P/ ? & \. D$ v4 g: o

    最今我接到了开发pc和pocket pc通过usb口通讯的任务。这两个星期我参考了很多方面的资料,特别是AKing大哥写的一些文章。但我始终没有打通这个关口,我贴出我的代码请AKing大哥看看,现在很急,多谢。 4 }& z% I6 @; M9 r- ppc的os是windows2000professional% v. e) F* c4 }: [ pocket pc是hp ipaq 2210,os 是pocket pc2003。 5 H) X1 T8 B t0 s% b V& g我装了activesync3.7。我查看过了,这个activesync目录下有pocket pc的驱动程序。pc也能识别。 9 t4 w/ p' D8 G9 {' t& ^0 V, Y下面是我在pc上调用usb的代码。 & i7 I% z# F4 z2 N v下面的代码我能打开hidn类型的usb,但是就是不能打开pocket pc的usb。 ; d% U' A' L A//classGuid = {25dbce51-6c8f-4a72-8a6d-b54c2b4fc835} - h- p$ \! K, yDEFINE_GUID(GUID_CLASS_PALM, 0 t+ |- d' ?6 i" \ 0x25dbce51, 0x6c8f, 0x4a72, 0x8a, 0x6d, 0xb5, 0x4c, 0x2b, " P, _: ]% c6 @* d 0x4f, 0xc8, 0x35);8 Q0 F: s2 C: D% a GUID HidGuid = GUID_CLASS_PALM;6 x0 j# Z: h1 o/ R3 B n2 A HANDLE Get_DeviceHandle( GUID* pGuid) - |% R6 H2 v8 j R2 N{( x" ~2 U. S& z; |1 N& `6 u/ ^/ v. j ; d" f3 ~6 { A7 [7 ?5 j HDEVINFO info = SetupDiGetClassDevs(pGuid, NULL, NULL, DIGCF_PRESENT | DIGCF_INTERFACEDEVICE); 2 t: c- I! s. S# }" ]' f 6 S) m1 s5 A. P6 Q9 w if(info==INVALID_HANDLE_VALUE)3 V; B6 F% G. \3 ?7 Z {4 F Z7 c" a$ L5 Z6 J printf("No HDEVINFO available for this GUID\n");: u' q- q, i0 u$ ?5 J; L8 {+ M return NULL;' Z, U G. J* `( S5 p) j }* w$ p w1 G) B x SP_INTERFACE_DEVICE_DATA ifdata; 5 @& k# Y9 x( G' Y$ A c) O ifdata.cbSize = sizeof(ifdata);1 Y5 t. t! I! |- Z: L //0000是我在注册表中找到的序号, @6 p4 G3 @- u$ n if(!SetupDiEnumDeviceInterfaces(info, NULL, pGuid, 0000, &ifdata))) L2 h1 c/ O2 w+ s; a { " V# J' e+ Y0 s printf("No SP_INTERFACE_DEVICE_DATA available for this GUID instance %d \n", instance+1); & m) o# D0 L. B2 N p; ~9 s5 W SetupDiDestroyDeviceInfoList(info);1 R" b" R( O) `1 O4 \( B- D8 e. B return NULL;9 o) @: p" \: h& D$ { }

    // Get size of symbolic link name0 i! i! b0 H+ e1 }) B7 P8 ~ DWORD ReqLen; $ u+ i( I$ E2 D5 e - [. P& C. |, s( a/ E, ? SetupDiGetDeviceInterfaceDetail(info, &ifdata, NULL, 0, &ReqLen, NULL);9 F# d5 X( N @+ f , O7 C: x E ^) K9 g' n/ T PSP_INTERFACE_DEVICE_DETAIL_DATA ifDetail = (PSP_INTERFACE_DEVICE_DETAIL_DATA)(new char[ReqLen]);9 X( c* ]4 ]* e; d $ ]) p2 r5 ? U+ K% |5 D3 P* n if( ifDetail==NULL)2 {6 c% N" Y! F" H" o1 h {9 t3 p. Z: E9 E. u8 ?8 K1 B) Q: o SetupDiDestroyDeviceInfoList(info);* G+ S8 z; C/ C( V: b3 o g, Y return NULL;' E/ K' E1 M* K4 Z* V% F0 J }

    // Get symbolic link name 9 {2 {) B- S0 v ifDetail->cbSize = sizeof(SP_INTERFACE_DEVICE_DETAIL_DATA); - H0 I. q! r. x 7 ]5 N b8 K% T0 M* X ` if( !SetupDiGetDeviceInterfaceDetail(info, &ifdata, ifDetail, ReqLen, NULL, NULL)) 8 X8 ]" \* L+ L* h% Z {1 A6 N+ R% a6 m5 r. w SetupDiDestroyDeviceInfoList(info); , h5 z6 c: Z: z! M+ e% {2 x$ Z delete ifDetail;* E, T" x; `- P return NULL; 9 P, ]8 v+ V3 P }

    printf("Symbolic link is %s\n",ifDetail->DevicePath);# t$ P+ D( r# u! ~+ M

    /*\\?\\usb#vid_03f0&pid_1016#5&1bc41f6c&0&1#{25DBCE51-6C8F-4A72-8A6D-B54C2B4FC835}这是ifDetail->DevicePath的内容*/ 4 V' v3 w: O9 T // Open file; @8 v3 y) r, y" A' T7 _ //前面都很正常但就是下面始终得出一个无效的句柄,我也就无法开展下一步的工作.; |1 A% |% v' R$ \" X7 X( b HANDLE pDevice = CreateFile( W d' H. v+ \, F% j2 f* s- u0 J8 | ifDetail->DevicePath, 9 Q# r$ L6 n5 n* Y; K- d: l. }% Z GENERIC_READ | GENERIC_WRITE, C/ x& y' A- }+ Z FILE_SHARE_READ | FILE_SHARE_WRITE,7 j7 R+ }/ J. g3 J! n9 b9 k+ q: u NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);: v" a( o& n+ @* G& f% L ! u. @" L5 x- @# n$ Y if( pDevice==INVALID_HANDLE_VALUE) pDevice = NULL;9 ] U! v9 a& a+ @2 r+ E. F SetupDiDestroyDeviceInfoList(info); " Y4 a. w/ C+ }+ ] i I3 _5 v # A2 p" X7 w& a Q return pDevice; % `7 g* x. X5 g- L' J. `3 x# `! h} ) u0 N2 @# }8 ^6 Z6 [ v+ w& H再次感谢关注这个问题的人们。

    s) ?+ a# w# A9 E" ]* A* l; I% t- s 6 c) t$ B! ^* e1 A9 h% I' h % f2 R& j$ j/ k# j) o 回复人: constantine(飘遥的安吉儿) ( ) 信誉:101 2003-12-16 21:23:57 得分:0 ( l$ A) b0 w1 o- S- J, j8 W ( K+ M6 Q# z: p 4 W( \, o- l4 x) s + S; H C5 {" |9 j* J; R- Q! o4 | study

    , |% J$ a! ]: Z, Q+ Q9 V2 Z L5 k4 B, m2 h% C& l# y- T Top ) @ J4 a+ @" z" C5 m; _0 T5 M # X: w+ F! g5 R3 ]) z7 V 回复人: wenyongjie(一个想成为大鸟的小菜鸟) ( ) 信誉:95 2003-12-16 22:28:46 得分:0 # _! E+ X2 e8 X3 t+ Q8 _ + c* f% a$ ^$ I; ^, h6 d, ` ( _7 B1 ?/ c4 @6 v: F* K 2 [+ l/ H# l ^8 I3 Y 只有学习的份

    6 s2 L" ], Q% k( u 8 t0 A, j1 Y D* FTop & O" S' y3 ]' X( p* Z- n& P0 n & H9 D# ^$ {8 p/ U 回复人: HUANG_JH(保卫钓鱼岛) ( ) 信誉:115 2003-12-17 9:50:41 得分:10 ; g$ T2 R, E& ?6 T" C f7 o / W: s5 q$ S$ v* O6 j ! c2 X. _ j) d, _* a/ | 3 P' D$ z+ Q1 V不知道有没有用!

    /////////////////////////////////////////////////////////////// 8 k, n& t; u6 D' M8 [- t9 T9 i// HW9911 evaluation board software Rev. 1.0 2 Y- P2 ?0 ]' D// program by Liu Ding, Bei Jing HEAD Elec.! v7 v6 k; @7 ~* ~* C( g6 Y // this is the main program for the HW9911 USB device evaluation board+ `+ T7 o9 E: \# z* E // it illustrate the basical read/write process of HW9911 E1 o) Z# c. N: A// by three examples:0 H; n1 T4 f7 r // 1. write datas to ram on the evaluation board/ R( t5 t) G" a7 o* U/ S; E: N // 2. read the datas from the ram on the board , a7 Q: N2 @1 W1 w! |// 3. send datas through RS-232 serial prot on the board, e& |0 Y+ T% z& z // 7 G) G: n1 O* f6 m6 \$ e& D5 M // the whole project are build with MSVC 6.0 6 y9 |9 s, j; J// and tested on windows 98 platform. ' s0 h ^) w6 T1 f8 B// 5 d t# w/ I4 z6 S8 R+ S// notes: you can use hyper terminal to reaceive datas form RS232 port& T2 Y5 h x& y0 w+ b1 z // $ k) w: |" {" y. J8 g' P9 ^// this software are designed by Liu Ding. G! V8 x- P$ `: t/ H // if you meet any problems, pls contact by email: 3 Y9 ?0 m- l! u3 o \// hugehard@263.net& G) X Y! s6 _: W' M // or contact HEAD Co. by Tel 86-10-87312497. b& i% k8 a+ B1 N( V // or by fax: 86-10-87312495 0 i# ^, ?( _; U4 Y+ [1 k+ [///////////////////////////////////////////////////////////////

    #include "hwdll.h"9 E, D" V. v/ C1 z, f0 p% w #include "stdafx.h"7 z& P* ?8 ^9 @+ {- y #include <stdio.h>7 ]4 l" f; n3 k #include <windows.h> # l/ ^3 ~* h' n1 E( r% q3 A c#include <memory.h> # n, i9 E- J. k) p& \1 r3 @$ {#include <DEVIOCTL.H>1 [8 w3 y$ t" E #include <stdlib.h>. X7 J: Z3 b& I #include <conio.h> 5 e% e2 X r* b/ q#include "hw9911.h" % E5 E4 w2 u) J#include "test9911.h"

    % v' `2 ?. V6 x' Q8 Sint main() % [0 f( \9 \3 h$ w{& y( Y2 Z% Q- ]# V$ R& A8 V* |9 | int hOpen=FALSE;' r' L8 ~9 E% H6 ~& ~5 v int hCommandLength=32;, o$ W' ^* q- R& U' c int hDataLength=64; 7 S2 w \- }0 q, T1 H int i,VertAddr=0,HorAddr=0; - G) Q" w5 |$ m/ i* b int addr,TotalLen;( A4 _5 ?; ^+ K: D9 J- I8 W USC StAddrH=0,StAddrL=0;$ G9 b) B, ~6 b; M* o" S USC DataLenH,DataLenL;$ ]1 y9 b* H2 V- F! d USC *hDataBuffer,*hCommandBuffer; ( p5 i8 k* W4 M/ I g } USC ch1=0x61; 0 V# Z( u0 M: E HANDLE hDeviceHandle;3 w" q# D% l& H* O 2 s# P9 @+ d. f3 H* c; y& g4 M printf("************************************************\n");7 |" k1 E# i! K; H( y3 ~ printf("*******HW9911 USB DEVELOPMENT BOARD*************\n");6 d8 ~0 s' B" |5 t A/ A printf("************************************************\n\n"); 5 @! ^/ `6 `% X' y6 r printf("now press any key to open board\n");& a) q P! e4 p# T7 X" s1 o8 ]$ ` getch();

    /********* call hDeviceOpen in hwdll.dll to open the board***/" o6 a; f, b) x2 } //hOpenDevice 说明: 2 ]! g% M7 w! c; f( g// BOOL hOpenDevice(HANDLE *DeviceHandle)3 r3 Y: o* P, t1 l' w% | R+ y // 作用:打开设备* Q* w' U; J0 X) d5 D" e // 参数说明: " t" D# r% o; i. X- S// DeviceHandle:设备句柄/ d `3 C! [ l$ `# m: M' i // 返回值:+ d { H: Y j% i3 } // 设备打开成功返回 TRUE,失败则返回FALSE- b6 f% d& R! T& S if( (hOpen = hOpenDevice( &hDeviceHandle ))==FALSE) 3 W. ]) X6 `: }' I% p3 v {5 h8 g `7 i! G0 L printf("can't open device\n");9 | {: O$ j r8 h4 Z printf("press any key to exit\n");5 X/ G+ O3 l H+ I% C getch();# U/ n+ r9 E: |" D. h4 ?" Z return 0; 9 M( K8 |& Q0 A# p- d }2 z3 J# Q& t1 ^ else % l7 H+ J* N( f: c- | printf("\nCongratulations! device opened!\n\n");

    /****** build and send command **********/! Z$ a: l9 k) U1 `8 d* e printf("how many bytes do you want to access?");: k7 J/ b" Y' l4 E @ scanf("%x",&TotalLen); 3 U3 c2 h$ ]( F1 F: F while(TotalLen > 0x7fff) 0 N7 e- O2 S* S% Q; @+ B! W+ H2 } { K- p/ C6 Y$ P printf("pls input a hex data less than 08000\n"); ' ~. `, j9 k1 q: C scanf("%x",&TotalLen);+ e- `5 ]+ F# r1 g1 @ } 7 ]" w# I' b3 S DataLenH=(USC)(TotalLen/0x100); //data length high bytes & J7 R; X4 j# y/ F$ M4 y DataLenL=(USC)(TotalLen%0x100); //data length low bytes

    printf("************************************************\n");) p" k+ Y8 F- g$ F$ j4 R+ Q. L& k printf("now program will write datas to ram on board\n"); 9 X4 L7 I8 m% @, r printf("total bytes of datas is %x\n",TotalLen); - G; D; B$ i* A, _ printf("press any key to continue\n\n"); * k* J: [! q2 L7 U5 z getch();/ ~- i; T" M& K* @) U' k6 V# L) r /*****************************************************************, d; O1 c8 a) n( _ now will build a write command packet 6 W4 Z# A) a, H( Y6 M0 J4 ^1 Y+ F+ ` with the first byte is 'w'. 5 G& R& A! {2 n! ]5 |( K+ x6 E and the following bytes are: 8 r, }6 w1 p; X8 f- N4 h start ram address byte high, start ram address byte low,( J* u* c- x, `) x1 y8 Q5 d1 I datalength byte high, data length byte low. 4 O0 f' E' I+ N' C) L9 |7 S this packet will send to device through WritePipe1, J5 t E* F. B3 B6 e" X# Z which is endpoint 2 of HW9911.2 f; O4 I/ `3 _/ p1 a; o when the device receive this command packet, 4 t' g( M- Z/ I! ^% H( _ it will write TotalLen bytes data to Ram on the board: r/ u; n2 y! Z5 e ******************************************************************/

    ; i) y8 m- ~0 N, H hCommandBuffer=(USC *)malloc(hCommandLength); 7 b: ]* } i- d hDataBuffer=(USC *)malloc(hDataLength); ; p) |/ @$ g5 u( ~5 i& t' { hCommandBuffer[0] = 'w'; //read command v# q! }6 i, T8 \# M6 h/ l hCommandBuffer[1] = StAddrH; + r/ B5 Q0 P: S! F0 H) @* b# Z hCommandBuffer[2] = StAddrL; , V* [+ j0 L( F( C; J4 i hCommandBuffer[3] = DataLenH;' C* L0 I) h* H+ q- U% c hCommandBuffer[4] = DataLenL;

    /* call hUSBIO() in hwdll.dll to send command packet to device*/ , q! M( e- K% w$ K! Y5 z// hUSBIO 说明:, R1 B6 b1 m4 l* B // BOOL hOpenDevice(HANDLE *DeviceHandle, N9 [- r `6 t0 T/ @- h; b$ E // unsigned char *IOBuffer, 3 ]& Z1 T1 H9 c# H: g) A/ _- W9 N// int BufferLength,; l8 s z- O" H9 j // int PipeNumber,! S. k3 Y6 p1 T // int Action) ) [' c% J; R+ x7 K// 作用:设备读写 " h) D+ u- w* Y# T9 l2 d) I// 参数说明: 7 b3 ? G1 n% a5 I// DeviceHandle:设备句柄4 q3 u# V) i ~% E; ` // IOBuffer: 指向要传送的数据指针1 z* m, m5 y- Y // BufferLength: 数据包长度# Z: @/ ` G: j- X // 对于发送缓存1、2和接收缓存1、2,BufferLength必须小于或等于32 % e: \1 l" c$ O0 Q6 T7 }// 对于发送缓存3和接收缓存3,BufferLength必须小于或等于64& v5 z- L O1 W2 f- J; Y8 c F // PipeNumber: 通道号 $ q% m) I1 E* X// 发送缓存1:PipeNumber=0; 2 e' U* J$ q! e4 z* K* n" Y// 接收缓存1:PipeNumber=1; ) V# Y" A! X& I1 j H' C+ x// 发送缓存3:PipeNumber=2;0 x7 A; ]. O/ b+ o# M // 接收缓存3:PipeNumber=3;$ Z' E% e; C8 I3 [ // Action: 读写标志。TRUE代表从设备读数据到主机 5 y' E. p' ~3 z; f) B// FALSE代表从主机发送数据到设备 ' D! L# x u. F' H7 c/ c // 操作接收缓存,Action必须为FALSE$ V9 S. F7 s! [/ |: Q2 P // 操作发送缓存,Action必须为TRUE % ]5 D5 p7 Y- e7 Y Z: z' x// 返回值:5 c7 a6 t; c4 E+ K3 U // 操作成功返回TRUE,失败返回FALSE

    if ( hUSBIO( &hDeviceHandle, Y/ l! u: M/ \- S% l+ Z5 l$ L3 v hCommandBuffer, , U. Y" V4 n i. O$ `5 i hCommandLength, $ E* {0 |0 Y5 m/ K- H. a B% l( k hWritePipe1, 1 f+ d1 Y: \, Z5 q FALSE) == TRUE) ) T9 S5 A: K# d { 1 ~) C$ ^1 [' q" q2 Q3 Q' H printf("command 'w' writed to board\n"); 4 {$ t T8 a: Z8 N3 D4 ^0 T printf("now press any key to write datas to ram\n"); # Y2 |# _8 m" u' J- \ getch(); ) y8 C! F3 q! [! O } 9 h( ^& z; n2 |9 _- E, M7 u else # h+ h% L: i* I; L7 E' o! U0 { printf("data can't write to device\n");

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

    printf(" "); ! }3 s5 g! ~6 H for(VertAddr=0;VertAddr<=0xf;VertAddr++) 0 ~9 A0 F" M- Z! L$ E" g4 p3 R5 q printf("%02x ",VertAddr); 0 F9 O l) G' _ F# n' G printf("\n"); ; b! s4 T1 }7 K addr=0; ( R8 |1 \! g! X4 U/ z4 y( ] while (addr<TotalLen) ( y7 A9 Y. i5 }# T {4 O( P2 h' h) T4 r! q( ]: S) P if (addr+hDataLength > TotalLen). R o/ Z; c( G9 }! g0 ~$ | hDataLength = TotalLen-addr;5 g; U2 n4 k) x+ M( _3 w. v for(i=0;i<hDataLength;i++) / j7 B) C, `2 ^3 U' A0 T7 T4 p) i- U {* n; q% p4 C# Q5 y2 J: r5 X+ h hDataBuffer=ch1++; ; R+ B6 j" b3 v( O5 S6 B9 X& O if (ch1 > 0x80) + t/ b8 y/ Y6 Q0 j! x9 C# x ch1 = 0x61; \$ w1 ?6 W' v% I# y1 d% X, y } 3 f0 l$ }. Y( N" k2 t+ m# g/* call hUSBIO to write datas to write pipe3, which7 z7 {9 J# E8 F. z- k) i1 j is endoint 6 of HW9911*/

    if ( hUSBIO( &hDeviceHandle,5 i; r" L* h0 i hDataBuffer, ! F8 w2 B" Y% N6 i" L' _ hDataLength,8 A Z! w: U, Q! g7 Z' Q! { hWritePipe3, ; q; V$ G. N4 P2 `: }0 y# y2 V6 M FALSE) == TRUE) //FALSE means Write operate % {) z3 x& x- a/ R {" H+ P6 r+ V& L3 L* l for(i=0;i<hDataLength;i++) ; v9 f5 x- F9 R, @, J$ B3 F4 @0 Z { ]5 X! c9 U& L$ h6 y6 B/* print format control */ : M3 d. e1 g4 m3 `- u if(i % 16 == 0) w8 C6 ^. Y# D { 4 x! Y' g$ T, D& X! x# @; l+ s$ p/ m. c printf("\n%04x ",HorAddr); 3 i U- K$ ~$ v; n8 d b6 M- z HorAddr=HorAddr+16; # ~/ D. w& L9 X% w } ; z! |+ ~8 [0 U0 W% O# k0 p printf("%02x ",(USC)hDataBuffer); 2 }4 _9 q6 S& a5 J2 W } 3 W& X- f( w# m. Q+ }+ c& f: j0 j addr=addr+hDataLength;5 c+ D* }+ j6 q( T# y; f5 H }3 i* a( v) S; g' i4 P5 F else 2 c, s7 c1 P9 A/ f { ( C8 [4 G/ @5 ~* o& U1 B) G printf("can't write to board\n"); + t$ t% l, w: P/ E- P exit(0);# x- b+ c6 _2 A. o1 b1 k2 L, w' i } 1 q8 M7 {% `8 ^6 D V4 T6 \3 L/ e } 3 X& Z: L6 F# H0 Z2 S* V8 t$ N% i printf("\n\nTotal%x bytes write to ram OK\n\n",TotalLen);

    ' C" n, D0 ]* |0 E* J* h ( c8 Y- \5 e. [Top 2 i, @0 C- {$ U' [* Y4 z. o: ?& o + q8 n5 z# U9 B 回复人: HUANG_JH(保卫钓鱼岛) ( ) 信誉:115 2003-12-17 9:50:51 得分:0 " s, \$ q& X6 H( G p 7 ]9 c$ f6 _$ ]4 G " G, U) ~; J# t+ f. G

    /***************************************************************** z- A0 k A; k( I/ \ j now will build a read command packet 9 k* ]" \, \; }( v with the first byte is 'R'." U; Z3 c+ @: M) Q0 n& z4 u" k and the following bytes are:9 N0 h7 b* e, S% O6 I start ram address byte high, start ram address byte low, # p$ |3 \" M6 p* r- {& |9 r datalength byte high, data length byte low.% B; f* C$ d9 G' s% V& A0 v this packet will send to device through WritePipe1, , [, i5 b4 t" ?$ d s$ N- ^9 x9 C& w% | which is endpoint 2 of HW9911. . i2 \! N6 G( y3 i when the device receive this command packet,1 g9 {% x. _( h7 d" d) W+ c it will read TotalLen bytes data from Ram on the board ' V, I* a, w6 Q& r! B7 b* _******************************************************************/

    printf("************************************************\n");' o/ g+ ~+ z. F printf("now program will read datas from ram on board\n"); " \3 Q# R4 H/ M) P9 d& N printf("total bytes of datas is %x\n",TotalLen); ' z, K( |2 A0 p; F2 P printf("press any key to continue\n\n");) d7 O9 r) l9 j1 u4 |* G* P getch(); 4 x5 e. E% i9 k hDataLength=64; * W1 U* Q1 d1 j# U hCommandBuffer[0] = 'r'; //read command, I/ k$ m: {0 l/ [: m6 D hCommandBuffer[1] = StAddrH; ) B: ^. ^8 Q- K1 ^' X) j0 r1 } hCommandBuffer[2] = StAddrL; 7 f- k; {% x7 M$ N hCommandBuffer[3] = DataLenH;9 L, ?2 i7 S& w) F4 F. | hCommandBuffer[4] = DataLenL; ' v6 E9 f1 m3 E! j+ u( f6 y5 x /* call hUSBIO to send packet */3 ~5 I' w2 \* [* W& z- v3 f if ( hUSBIO( &hDeviceHandle,( o1 K+ s! F: _ hCommandBuffer,* [- l6 U. E4 x) e( ` hCommandLength,; h5 T3 B" y5 a7 i& H0 \" P hWritePipe1, 4 b7 U, b" K3 Q" y' m2 K, u% `5 x FALSE) == TRUE) ; V; ?7 E( p- Q6 ] { : Z8 l" v c( y% x9 a0 Q( ?: q7 m printf("command 'r' writed to board\n"); 1 T& r/ B6 G8 m! H! X printf("now press any key to read datas from ram\n\n"); 1 Z/ g1 ]- V: m! O2 l getch();6 F ` ]. _" q7 N }$ R6 N/ _) Q6 O/ X3 q% D6 r* S else " T. [) ?$ i! a/ i# K; h/ r3 P printf("data can't write to device\n");

    /******** read ram data form board **********/. F& i& {9 H2 ~3 V( o- {9 V# H: j printf(" ");) T% _4 y# W/ k+ e* j. M for(VertAddr=0;VertAddr<=0xf;VertAddr++)0 t" E3 D1 v) c printf("%02x ",VertAddr); ' z" ]4 v: x3 s( ? printf("\n");& w5 T: V9 T! ?/ X addr=0;4 U% a% e% G$ \+ ?6 Z# y' O R HorAddr=0; ! o- }( F7 O2 f; E9 h while (addr<TotalLen) 8 ~ E) X0 w7 @9 a/ N2 k) c# n3 b { ) {8 Z0 v! K# ~ if (addr+hDataLength > TotalLen). U7 h+ n7 H( _3 _ hDataLength = TotalLen-addr;- n3 |6 w& q+ P9 A' b" } /* call hUSBIO to read datas from board */ 5 A! q0 H! K4 l if ( hUSBIO( &hDeviceHandle, 4 I0 _( o1 |1 Y. \8 P hDataBuffer, 7 O# ?, v/ L+ y; H hDataLength,' T! a$ E( g7 B' Q hReadPipe3,7 d7 P9 y" Q0 q0 L1 g TRUE) == TRUE) //TRUE means Read Operate% z, k% V/ O4 G L { $ I r* q7 N+ Q1 `) e; `( C for(i=0;i<hDataLength;i++)2 I. `1 W: c2 @ {! Z* r7 I" y( j6 Z4 z4 f( N /* print format control */ ( e! o; B5 Y* d6 i$ j if(i % 16 == 0) / u$ K0 z8 T. y& k0 L6 P ^ { * h; F4 X1 z/ F: H4 C: x0 {2 I U printf("\n%04x ",HorAddr); * O4 y4 s" O3 j HorAddr=HorAddr+16; - R' c, y: Y6 z }3 v/ ~+ T* P3 P. Q3 A) O U' ^: ~; J, E printf("%02x ",(USC)hDataBuffer); $ _& Z% C2 ?% q; w/ ]& c" J }+ B8 u( X+ a# c0 Y) X2 @& n addr=addr+hDataLength; : V/ I% q1 O4 G0 r1 f$ j2 U# G }: S. x1 }1 y5 O* B/ S" E9 y' H else' W: u8 w7 i: d- A( m1 @, z {% L8 P: x* w t; |$ _) D" L* P. ^ printf("can't read from board\n");1 L( ~* v7 d _9 [) ~' n exit(0);" ]# m' K5 |9 c) D1 F* Q } ! i# U# z+ \* q- D1 ?. S: v9 u } : C8 I; I) \4 n' c% ~2 r1 L; Y printf("\n\n");7 I, T7 o6 v* S printf("%x bytes read from ram OK\n\n",TotalLen);

    /*****************************************************/7 s) ]& s- }- Q, K* {" C& N9 j /* process rs232 test */- {4 n$ u( u9 P7 S) g% V3 C /* the first byte in this packet is command 's' */. c8 E; V# _9 l# Q" L; S /* and the following 2 bytes are used to set */- n0 L7 S5 {& R7 R /* the baud rate of 8051 */ ' K( {7 |; N( y: p$ J/* they will be write to TH1 and TL1 respectively*/! I; C& B. Z* ]: g; K /* the following bytes are datas will be */: A( B" N: X" l1 r' z% F /* send through RS232 serial poart */" B' j, b# u- E2 _ /*****************************************************/ ( C7 \) Y5 a' q2 g printf("\npress any key to process RS232 Test\n");8 R' n0 s' |' \# A getch(); % g. O! Z/ g# P4 f2 i 2 u) M# ^. U! p& H/ L USC TH1,TL1; 3 t+ |: ^- C9 o7 f char hStr[30];5 ?( k7 F ^) _2 ?+ T TH1=(USC)(BD9600/0x100);# m) S' A1 v+ C8 _, x \ TL1=(USC)(BD9600%0x100); 9 ~. k7 G; A! Z hCommandBuffer[0] = 's'; //read command ( n2 l) P( V! N( H; C {' u hCommandBuffer[1] = TH1; - B: n" N- C7 t6 N( { hCommandBuffer[2] = TL1; //start address is 0x0000

    strcpy(hStr, "Hi, dear HW9911 consumers! ");9 r# V0 _0 I- h* r8 k0 y: O2 u4 E printf("Hi, dear HW9911 consumers! ");) w5 ^2 J5 E) q7 T* f- M) l memcpy(&(hCommandBuffer[3]),hStr,27);

    if ( hUSBIO( &hDeviceHandle, : ^0 q& G, g8 H0 F* ?9 @ hCommandBuffer,* L( ^+ _, N, ] z* \ 30,8 M0 }2 g' V# H3 z; S hWritePipe1, 5 Y. f, T8 k6 m# |2 ~, v: ^) V F FALSE) == FALSE)5 D) j6 n6 l% w( z" N2 u { 7 b2 B3 Q1 @( J: R' o: | printf("can't write datas to RS232\n");$ r. _) K7 |$ d7 r exit(0);: O7 x! g* j. {: L* h X, D }

    strcpy(hStr, "I'm HW9911 Evaluation Board, ");; m' `2 V( g. L; \. r5 b printf("I'm HW9911 Evaluation Board, ");' E3 F+ v3 w; Q+ ?- c memcpy(&(hCommandBuffer[3]),hStr,29);. J4 z% F( u- e3 _3 Y' ]4 A 2 E0 ~7 f+ Y" P, } if ( hUSBIO( &hDeviceHandle, 0 _: K: \/ V- ?8 a hCommandBuffer, . z# E8 J$ y/ P, M9 O6 ~ 32,; Z. t. S2 g/ K6 v: b$ _ hWritePipe1, 9 i* c5 N" G; b$ T- t( f FALSE) == FALSE) 1 x6 T- b. C% U. l( h- g9 Z {( y7 w( t U0 t6 Z" _% _ printf("can't write datas to RS232\n"); . q$ ]0 L* P- h exit(0); 8 S. f& F7 n3 x: p0 t1 c+ n, v$ i" J }

    strcpy(hStr, "thanks for purchasing me, ");6 I1 X+ t$ Q; g$ H) Z9 t printf("thanks for purchasing me, "); 3 T$ \+ t' `9 T memcpy(&(hCommandBuffer[3]),hStr,26); 2 e* Y; [, t7 i; R4 W4 ]+ ~ - A* R6 ~: u; t3 b/ D if ( hUSBIO( &hDeviceHandle, ( \$ z. v( v" T$ ^/ o9 V, B F hCommandBuffer, * M3 P. F. ]5 V: j 29, 9 L: a* [1 n3 ]) k5 u* W _ hWritePipe1,, E7 y. @; ]: C e FALSE) == FALSE)+ J$ k6 [0 C2 L: U { % r7 z7 o/ z% N8 ^* Z5 r# w3 H printf("can't write datas to RS232\n"); ! L; M* Y& z0 ?. \( @ exit(0);+ b. ]( } k4 r+ H6 W }7 f. L$ @6 f8 L6 ^! O# ^ 0 p$ z6 Z% F# G% l4 r2 s strcpy(hStr, "If you meet some problems, ");) ~2 v2 J: g+ X" P printf(hStr, "If you meet some problems, "); . n. @) O3 S+ k$ I' F$ @1 B2 z memcpy(&(hCommandBuffer[3]),hStr,27);: Y- l; ^2 h, ]5 u% c5 q' I8 q: K : {0 }8 E9 [7 ?( E1 B' V if ( hUSBIO( &hDeviceHandle, 0 ~& ^5 u" V3 q# S: R4 A' K hCommandBuffer, . Y& I! U8 k' u, d$ Z7 c 30, - u2 p% r; Y+ w hWritePipe1, 1 h. w! x7 ~8 d/ [5 \ FALSE) == FALSE), j! `: }* M; q+ J! s { ! E* x7 V# J0 q: G5 J5 W7 G printf("can't write datas to RS232\n");2 A; R+ \ g0 J+ U9 V j9 O exit(0); 6 [' U% n8 G$ ^- L/ D }

    strcpy(hStr, "pls contact my designer "); 8 Z* H& I. @4 K9 v printf("pls contact my designer ");) r4 g0 t) U+ i+ M0 ^# j$ s memcpy(&(hCommandBuffer[3]),hStr,24);- h$ E( j7 o, J3 x" C2 P 8 U9 V1 r7 G. l2 Q, n! r4 \ if ( hUSBIO( &hDeviceHandle, ; h2 X, U, J0 l2 p& ^ hCommandBuffer, 3 ~( \3 Z" S' F 27, + a2 W( H/ p8 q3 x% j. T+ d hWritePipe1,& ^$ _- A; \8 W8 J0 w j7 F# p6 l FALSE) == FALSE) 8 X$ S$ I2 V' p8 P { . z/ y& h" r9 P# x6 E printf("can't write datas to RS232\n");0 t: e* V; n; ^1 S, j0 R0 ^ exit(0); , F0 @9 F# _' s2 D, D }

    strcpy(hStr, "by email: hugehard@263.net."); / T6 A0 E5 B1 a4 K; f printf("by email: hugehard@263.net.\n"); ' R* b% e* j+ ` memcpy(&(hCommandBuffer[3]),hStr,27);9 f+ f! K) j Y0 Q 3 u2 N6 ~, `4 ~' t, K7 {- T m if ( hUSBIO( &hDeviceHandle,1 {7 ^1 T; n1 V- E hCommandBuffer, . m' I. d7 W# H w+ Z 30, $ d1 G* o' [ b: B) u1 X1 J hWritePipe1, - `# d6 I* Q# M! ^, r FALSE) == FALSE) ) _; H: f) J9 p3 h1 j { $ U0 c6 ^7 n2 Y. x c. R# ?0 I printf("can't write datas to RS232\n");0 l; D. d5 A2 S V% E/ q' y exit(0);) N5 B& _3 y: P* Y. x2 e- [ D9 \* W! O! V } # m# G9 B4 k; j3 q/********* call hDeviceOpen in hwdll.dll to open the board***/4 F3 m6 `/ x) Q4 g- V$ [" x // hCloseDevice 说明:& S5 K9 g* {/ t1 T) Z // BOOL hCloseDevice(HANDLE *DeviceHandle) ! x/ s2 A4 E) T, M3 {// 作用:关闭设备 + q; O2 u0 p4 I5 Z, E. c// 参数说明:5 z5 z5 a7 V! w! t3 Z- D2 ` // DeviceHandle:设备句柄. V, \# K( S4 N- W, W0 Z: O // 返回值: " _3 P0 I! }6 f% Y8 E// 设备关闭成功返回 TRUE,失败则返回FALSE - e1 @5 }0 I7 A& { if( (hOpen = hCloseDevice( &hDeviceHandle ))==FALSE) $ p" \+ d [$ B5 I* C { - H* m* e1 _, ?% K- b printf("can't open device\n");" h' s) V1 ]; h: K, T6 b) m printf("press any key to exit\n"); ; w# w" l# |8 m: p. v getch(); ' l& [2 _, S9 @, r! M8 B: C% o1 T return 0;5 M$ m* x6 G' a7 Z5 f8 x8 R! l8 L }( z! |/ v( L* m! M i" k else + A0 N" _% Q$ c6 ~7 U# x printf("device closed\n");

    printf("press any key to exit the program\n"); 7 ]" a6 y: R( ?5 E free(hDataBuffer); % A' a. R$ I- ~" K6 t. f free(hCommandBuffer); % Q6 ]4 a: R" B% ]! n# T, s& P+ }6 |; l getch(); 9 T: E }- [% U: l9 I/ X return 0; : {6 A% @) y3 ~; E( C% |, q}

    # G; c2 q. A% G0 V ! W: q. Q7 q* _ P+ a # e7 x; }) @% I# m% `+ @8 q( w6 DTop * ]$ C0 p* }8 T `, Q 3 J* Z5 \ E M U1 g 回复人: aiyu33() ( ) 信誉:100 2003-12-17 11:41:24 得分:0 + J7 J! ?+ E6 g+ X& H & p5 r9 Z: F! l: C & j/ C& {: ~6 `7 q7 ` . [; J" M& a8 o- }, c, Z. X {upupupupupupup

    6 K! v; h) y* R 7 ^- K: k! }) M Top $ i* k) H1 y5 A* b( z" f 7 b# R! Z4 r1 Y, c0 y 回复人: kingcaiyao(AKing) ( ) 信誉:110 2003-12-17 12:53:39 得分:0 7 g1 g% ?+ ^. H & P/ o; U. J3 J1 b. T $ W. {' \9 i# f/ V9 S8 d 4 t! x/ n- Z2 H( J( Y8 f5 _ 你开发的这种软件类似于Palm Desktop Software,负责Pocket与PC之间通讯,我建议你最好先写一个驱动,将USB口虚拟成一个串口,然后直接对串口操作会很方便的。我现在做的程序可能和你相似是一个CDMA模块,通过USB口与PC机连接,然后由驱动程序将它虚拟成一个串口,我的工作就是和这个虚拟的串口通讯。

    % @3 U+ ?/ D& J4 O- @ 4 O# p3 ~& ^9 X' _8 U- NTop - C4 B. |6 ^% t% ~ & t9 u1 i$ _! c I9 _4 T8 P 回复人: kingcaiyao(AKing) ( ) 信誉:110 2003-12-17 12:56:27 得分:0 4 U) ]* ?$ @! R1 S3 h / w, @# w- j( L! x2 H ' M$ j" Y6 ~, \! a6 G7 S0 G ) Q; W. H) Q' @, z2 x% u0 P& d% E Pocket与PC连接肯定有驱动的,如果驱动程序没有将Pocket虚拟成一个串口,你也可以直接通过设备GUID和设备序列号进行访问,详情你参见我专栏上的一篇文章。当然了,通过虚拟串口来访问设备肯定要方便,简单些。

    & K% ]5 J( [" ?/ g! y0 Q 3 p( K9 ~+ y% V. T2 G9 o" G Top B4 v9 E: z& a5 E5 T* n 8 @- @; C: M' u: l+ } 回复人: aiyu33() ( ) 信誉:100 2003-12-17 13:31:08 得分:0 2 T' {* Z- o2 A' m+ O! X X% n: V, p; m" s( a3 I 0 C2 v1 G% c( q" Z# e& _( l 6 { B* l0 z1 {/ k1 J( A5 M: a5 M, H' y 我得这款pocketpc默认只支持使用usb与pc相连的,而且activesync3.7就是使用usb传输数据的。如果我自己写驱动的话,不仅不熟悉而且很可能activesync3.7这个软件就使用不了。我只需要利用它的驱动。你的专栏上的那篇文章我也看了,我就是模仿你的写的代码,但就是到createfile这步就不行了,我的同事是用palm开发类似的程序,也是到这步就行不通了,是不是有其他的原因? / T* A; ]. d5 M& e2 h5 C我还想问问如果驱动程序将pocket虚拟成串口,如何查看它的符号名呢?

    8 L9 o/ e$ G P4 f4 P 2 w+ [3 B- |+ j/ Y# Q! n " d* \! K6 z: g: T B9 ITop , }! ^1 N: e$ ^+ @* g3 e . b7 G9 A. J, [- h0 v/ V$ ? 回复人: kingcaiyao(AKing) ( ) 信誉:110 2003-12-17 16:53:17 得分:0 ; E- x3 H. S6 g$ Q9 g0 w4 b& K$ ~ 2 I( p7 B- L5 R- Z( t7 P. x% T. l' d 7 h- W) b- e! n& I" i1 R5 j2 ~ 3 j4 A: g5 @ F; p. |) y0 I# g 假如将一个USB设备虚拟成串口的话,那么它的符号名可能是COM3,COM4,或COMn,这根据你当前PC机的配置而定 。它的符号名位于注册表中HKEY_LOCAL_MACHINE\CurrentControlSet中,你可以搜索注册表,另外在2000或以上的操作系统中,你可以到HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SerialComm中看到。

    ( P( f4 y+ _0 E- r , Z2 E+ \4 m) I/ w9 X5 `! O& B Top # |2 V0 F+ x0 W# h$ A, C . A) y/ L3 `5 H& Z3 X6 B; z 回复人: kingcaiyao(AKing) ( ) 信誉:110 2003-12-17 16:55:33 得分:0 4 U9 C0 \0 t7 r 8 J7 \. k1 h9 V5 `: I ! c2 L7 D9 L! D 5 C* M; b6 N8 I8 Z; r 我以前在一张贴子中详细回答了如何利用设备序列号和设备GUID来访问该设备,你可以搜索一下CSDN。你所说的CreateFile不能打通设备,你要查一下,你的符号名是否正确,包括设备序列号和设备GUID是否正确,设备GUID你可以从驱动程序的安装向导文件.inf中找到,设备序列号则需要你到注册表中去找。

    ; g! S0 c3 x' D3 F% W8 v! { 4 o5 d- {- z, k/ Z9 C4 U- }; cTop $ h' f1 R7 `' W" u; u* X! ~ / j7 s) e6 ]% ~* i 回复人: gyj_china(透明) ( ) 信誉:98 2003-12-17 18:15:30 得分:90 # p9 [. V, O* }- ^7 J! l ) d8 C& F( j, D1 s& I+ l- S* @! @ : C% m/ u2 x# Y% Z8 ~ ; o& q8 K0 `" z7 z( R& U6 I 没有星星不敢发言:(

    ( m! s$ |% X% i' }/ J: W! `+ { : F( R+ a, k% F, N: u9 }( { Top / W' v! ]" I& P7 Q' k4 B7 F: m ; S# i4 c5 q1 f5 x+ W 回复人: aiyu33() ( ) 信誉:100 2003-12-19 18:27:28 得分:0 ) V$ `! }) _ e { * v8 n9 _. H" H, N: U# A3 Z # h8 V" f; K" [: j5 {+ x4 a # o) t Y/ C" U" B4 ^- z; d不好意思,是因为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-5-27 12:54 , Processed in 0.377293 second(s), 100 queries .

    回顶部