请各位大哥,帮我看看下面这个问题,谢谢! |
尚未結案
|
lsh998
中階會員 發表:163 回覆:138 積分:60 註冊:2005-01-07 發送簡訊給我 |
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 对应的是:硬件无响应 为什么会 硬件无响应 呢? (不存在线路没插紧的问题) 请各位大哥帮忙,我的进度 在这里折腾了很久了 谢谢各位大哥
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |