線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1195
推到 Plurk!
推到 Facebook!

请各位大哥,帮我看看下面这个问题,谢谢!

尚未結案
lsh998
中階會員


發表:163
回覆:138
積分:60
註冊:2005-01-07

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-28 21:02:32 IP:218.14.xxx.xxx 未訂閱
VC声明: short WINAPI u_OpenCom(short sComPort, short sType) VB声明: Public Declare Function u_OpenCom Lib "GSCtrl.dll" (ByVal iComPort As Integer, ByVal iType As Integer) As Integer 输入参数: Com_prt 结构: sComPort 串口号 ( 1 - 255 ) sType 串口的波特率 ( 1 - 9600 2 - 14400 3 - 19200 4 - 38400 5 - 56000 6 - 115200 ) 函数返回值: 00: 打开串口成功。 15: 输入参数无效。 02: 打开串口失败。 函数描述: 以指定的波特率打开串口,准备通信。 VC声明: short WINAPI u_CommTest (COMDATA &comdata) VB声明: Public Declare Function u_CommTest Lib "GSCtrl.dll" (ComInfo As COMDATA) As Integer 输入参数: COMDATA结构: ComPort 通信串口号 1 - 255 Address 设备地址 0 - 255 ReData 函数输出值 (100 Bytes) 函数返回值: 000: 通信成功。 242: 命令执行出错,返回错误代码。 160: 硬件返回系统错误。 其它: 通信失败,具体返回值含义请参阅返回值代码表 函数描述: 测试设备通讯状态。 输出值格式(函数执行成功): “05” typedef struct _COMDATA{ unsigned char ComPort; unsigned char Address; unsigned char ReData[DATA_MAX]; }COMDATA; short WINAPI u_CommTest(COMDATA &comdata) { return u_GSHW.HW_CommTest(comdata); } short CGSHW::HW_CommTest(COMDATA &comdata) { unsigned char T_Dat[DATA_MAX] = {0}; unsigned char nCmd = COMMTEST; unsigned short nNum = 0; short sRt = 0,sRt1 = 0; memset(&comdata.ReData,0,DATA_MAX); m_ucComPort = comdata.ComPort; m_ucID = comdata.Address; sRt = ProcessData(&nCmd,T_Dat,&nNum); if(sRt != SUCCESS) return sRt; if((sRt1 = ProcessCmd(comdata.ReData,T_Dat,nCmd)) != SUCCESS) return sRt1; return sRt; } 以上 是 C 语言的 DLL unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation uses unit2; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject);//打开串口 begin u_OpenCom(1,1) ; showmessage(inttostr(u_OpenCom(1,1))); end; procedure TForm1.Button2Click(Sender: TObject);//测试设备通讯状态。 var com:COMDATA; i:integer; s:string; begin com.comport:=1; com.Address:=1; showmessage(inttostr(u_CommTest(com))); setlength(s,100); for i:=0 to 99 do s[i 1]:=inttostr(com.ReData[i])[1]; showmessage(s); end; end. unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; const DATA_MAX = 100; type COMDATA=packed record comport:byte; Address:byte; ReData:array[0..DATA_MAX-1] of byte; end; function u_OpenCom(sComPort, sType:smallint):smallint;stdcall; function u_CommTest (var comdata:COMDATA):smallint;stdcall; implementation function u_OpenCom(sComPort, sType:smallint):smallint;external 'GSCtrl.dll'; function u_CommTest (var comdata:COMDATA):smallint;external 'GSCtrl.dll'; end. 我首先单击button1打开 串口 是正确的 然后 单击 button2 测试设备通讯状态 show 出 3 。3 对应的是:硬件无响应 为什么会 硬件无响应 呢? (不存在线路没插紧的问题) 请各位大哥帮忙,我的进度 在这里折腾了很久了 谢谢各位大哥
系統時間:2024-04-19 19:11:25
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!