我用dephi做了一软件控制moden收发数据,可以建立载波,但发命令过去对方没数据回应,请问哪位高手有这方面的经验,发一点代码给我看看,谢谢!!!
解决方案 »
- 关于TADOConnection请教
- 一个关于TreeView的问题,在线等,急!!!!!!!!!!
- fastreport中如何实现如下打印功能
- 我用的delphi上面没有了菜单,怎么才能修好啊?
- DELPHI中只能使用OLE嵌入WORD文档吗,是否有其它更好的控件?
- 一个关于quickrep1的问题,希望可以得到大家的帮助!
- 急,急!关于数据库备份跟恢复的问题!进者有分!`
- 这一句查询语句如何写?(有分哟)
- 如何使“可用分”多起来?“专家分”和“参与分”又有什么用?
- 转贴:“我的问题都很菜啊,呜呜?”希望高手们去侃侃这个问题
- 我不知道怎样去寻找他?
- 如何将word文件通过ClientDataSet保存到数据库中?
1、获取当前活动的连接
获取当前活动的连接的RasAPI函数为RasEnumConnections,其函数原型为:
function RasEnumConnections( var lprasconn : RASCONN ;//接收活动连接的缓冲区的指针
var lpcb: DWORD;//缓冲区大小
var lpcConnections : DWORD//实际的活动连接数
) : DWORD; stdcall;
function RasEnumConnections;external RasApiDll name 'RasEnumConnectionsA';
参数lprasconn提供了一个RASCONN类型数组的指针,指向一个接收活动连接的缓冲
区,其中RASCONN的类型说明如下:
RASCONN = record
dwSize : DWORD;//该结构所占内存的大小(Bytes),一般设置为SizeOf(RASCONN)
hrasconn : HRASCONN;//活动连接的句柄
szEntryName : array[0..RAS_MaxEntryName] of char;//活动连接的名称
szDeviceType : array[0..RAS_MaxDeviceType] of char;//活动连接的所用的设备类型
szDeviceName : array[0..RAS_MaxDeviceName] of char;//活动连接的所用的设备名称
end;
参数lpcb为缓冲区大小(Bytes).
参数lpcConnections将返回实际的连接数目.
函数返回值为0表示执行成功;否则为错误代码.
2、获取指定连接的连接状态
获取指定连接的连接状态的RasAPI函数为RasGetConnectStatus,其函数原型为:
function RasGetConnectStatus(
hrasconn : HRASCONN; //指定活动连接的句柄
lprasconnstatus : LPRASCONNSTATUS//连接状态参数
) : DWORD; stdcall;
function RasGetConnectStatus;external RasApiDll name 'RasGetConnectStatusA';
连接状态参数lprasconnstatus是一个RASCONNSTATUS类型的指针,将返回连接状态参数.
RASCONNSTATUS和LPRASCONNSTATUS的类型说明如下:
LPRASCONNSTATUS = ^RASCONNSTATUS;
RASCONNSTATUS = record
dwSize : DWORD;//该结构所占内存的大小(Bytes),一般设置为SizeOf(RASCONNSTATUS)
rasconnstate : RASCONNSTATE;//连接状态标识,一组DWORD类型数值的集合。
dwError : DWORD;//错误类型标识符
szDeviceType : array[0..RAS_MaxDeviceType] of char;//活动连接的所用的设备类型
szDeviceName : array[0..RAS_MaxDeviceName] of char;//活动连接的所用的设备名称
end;
函数返回值为0表示执行成功;否则为错误代码.
下面是一个应用例子,列出了当前系统中活动的连接的名称及其连接状态.
注意,应在RASCONN缓冲区的第一个RASCONN结构中设置dwSize.
const
MaxConnections = 10;//最多的拨号连接数目
var
connections : array[0..MaxConnections-1] of RASCONN;
longSize : dword;
intAvailabelConnections : dword;
intIndex : integer;
dwResult : DWORD;
strTemp : string;
RASCONNSTATUSData : RASCONNSTATUS;
begin
connections[ 0 ].dwSize := sizeof(RASCONN);//结构的大小
longSize := MaxConnections * connections[ 0 ].dwSize;//缓冲区大小
intAvailabelConnections := 0;//实际的活动连接的数目
//获取当前系统中活动的连接
dwResult := RasEnumConnections( connections[ 0 ], longSize,intAvailabelConnections );
if dwResult < > 0 then //获取当前系统中活动的连接
memo1.lines.add( '获取当前系统中活动的连接:' + GetRasError( dwResult ))
else
begin
memo1.lines.add( '当前系统中活动的连接' + inttostr( intAvailabelConnections )
+ '个,列举如下' );
for intIndex := 0 to intAvailabelConnections - 1 do
begin
strTemp := '连接名称:' + StrPAS( connections[ intIndex ].szEntryName )
+ ' 设备类型:' + StrPAS( connections[ intIndex ].szDeviceType )
+ ' 设备名称:' + StrPAS( connections[ intIndex ].szDeviceName );
//获取连接状态
dwResult := RasGetConnectStatus( connections[ intIndex ].hRasConn,@RASCONNSTATUSData );
if 0 < > dwResult then
strTemp := strTemp + ' 连接状态未知:' + GetRasError( dwResult )
else if RASCONNSTATUSData.rasconnstate = RASCS_Connected then
strTemp := strTemp + ' 连接状态:已连接'
else
strTemp := strTemp + ' 连接状态:(' +
inttostr(RASCONNSTATUSData.rasconnstate)+')';
memo1.lines.add( strTemp );
end;
end;
end;