将8031实时采集到的数据发送到上位机,是16位的双字节数,由于有3个采样通道,所以8031每一次送到上位机的数据有3个。单片程序已经写好了,没有问题。现在准备使用SPCOMM控件来实现串行通讯。功能是:
对收到的数据进行转换,成为浮点数;
将处理后的数据存储到实时的数据库中;
请问:对SPCOMM要怎么操作实现数据的接受?
那位高手可以点拨一下,最好有比较详细的代码,谢谢!
对收到的数据进行转换,成为浮点数;
将处理后的数据存储到实时的数据库中;
请问:对SPCOMM要怎么操作实现数据的接受?
那位高手可以点拨一下,最好有比较详细的代码,谢谢!
Read
ReadAsync
ReadStr
ReadStrAsync
写串口的是:
Write
WriteAsync
WriteStr
WriteStrAsync
但是发送数据时使用的定时器;
接收时,在空件的一个事件了写接收处里(好像时onrecive...)
对不起,毕业很长时间了都网光了;
注意:波特率太高会丢失数据;
我测试过的;
SPCOMM里面主要就是writecomdata,onreceievedata这两个。我也看过不少文章,可写的时候就是有点搞不清。sunssc(大虾) :
我8031的波特率是4800,太高了是容易出问题的。关键是上位机接受到的是字节(16位),怎么接受和转换为浮点数啊?
有没有详细的代码啊?
比如每次送3个数(每个都是双字节的):I0,I1,I2;
时刻1为I0=0001001100000010,I1=1011001101010010,I2=0000001000101110
希望上位机用SPCOMM收到这3个双字节数,SPCOMM的事件应该怎么写?
结果显示的应该是3个浮点数/
ret := sio_open ( port );
if ret <> SIO_OK then
begin
{ Open fail }
end;
//以上为串口打开
ret := sio_DTR ( port, 1 );
if ret <> SIO_OK then
begin
{ Fail }
end;
ret := sio_RTS ( port, 1 );
if ret <> SIO_OK then
begin
{ Fail }
end;//设置DTR,RTS{
baud = (bits/sec)0 = 50 6 = 600 12 = 9600 18 = 460800
1 = 75 7 = 1200 13 = 19200 19 = 9216002 = 110 8 = 1800 14 = 38400
3 = 134.5 9 = 2400 15 = 57600
4 = 150 10 = 4800 16 = 115200
5 = 300 11 = 7200 17 = 230400}
//波特率的数值
ret := sio_ioctl ( 2, B38400, P_NONE or BIT_8 or STOP_1 );
//B38400的数值为14
if ret <> SIO_OK then
begin
{ Setting fail }
end;//以下为接收部分
ch : Longint;ch := sio_getch( port );
if ch < 0 then
begin
{ Fail }
end
else
begin
//处理接受到的字节(一个字节)
end;
//以上过程点到为止,需要你到 www.moxa.com.tw网站下载PcommLite,安装后又delphi编程说明,需要在主文件 Use Pcomm;Pcomm是调用的Pcomm.dll文件,我用此已经完成了多个串口控制项目,特别稳定,别的方式都有缺陷
会不会使我的程序变的复杂那?
能给点详细的解释吗?
就用ComPortLib吧,很好用,还有例子,一看就会用了,
你的那些功能,用它很好实现了,
只要用writestr,发送到缓存上,
然后在它的OnRxChar接收就可以了
>>就用ComPortLib吧,很好用,还有例子,一看就会用了,
>>你的那些功能,用它很好实现了,
>>只要用writestr,发送到缓存上,
>>然后在它的OnRxChar接收就可以了
这是谁说的,你在两千下用过吗