如何获取电子称重量(串口编程)(100)

  • 主题发起人 主题发起人 Mivier
  • 开始时间 开始时间
M

Mivier

Unregistered / Unconfirmed
GUEST, unregistred user!
电子称型号:上海耀华称重系统有限公司的XK3190—A1+,程序用MsComm实现串口通信。在A电脑上MsComm.Input是有规律的(在MSComm1Comm事件中:if Mscomm1.CommEvent = 2 then recStr := Mscomm1.Input),recStr中都有‘+’字符,共十几个字符,重量都在这些字符串中,分析后可以得到重量。但是相同的程序在B电脑上MsComm.Input就没规律,才8个字符,重量也不包括在这些字符中,所以就无法得到重量?请高手帮我分析一下,或有更好我实现方法!
 
联系我QQ:915497146
 
哪位大侠,帮帮忙
 
你把RTHREAD属性设置为1呢,看下,只要INPUT一接受到字符就读取,而不是缓冲区的一次读取
 
确认你的程序的通讯参数设置的与你的设备是一致的。波特率、数据位、停止位、奇偶校验
 
现在程序不用MsComm,改用TCOMM实现串口通信,数据可以正确的取得,但是反映很慢,程序如下:procedure TReadData_win.Comm1ReceiveData(Sender: TObject; Buffer: Pointer; BufferLength: Word);var Receivestr : string;begin SetLength(Receivestr,BufferLength); Move(buffer^,pchar(Receivestr)^,bufferLength); Memo1.Text := receivestr;end;东西放到电子称后,要几秒后Memo1才取得receivestr字符串?哪个高手帮忙解决这个问题?
 
很急!哪位高手帮帮忙!!!!!!!!!!!先谢过了
 
慢,不知道你程序怎么写,一般的话一秒钟应该有反应了吧
 
建议别用TComPort,别用MsComm,TCOMM,这两个容易掉包。
 
procedure TfrmOutBillWeight.ComPortRxChar(Sender: TObject; Count: Integer);var s:string;begin self.ComPort.ReadStr(s,count); str:=str+s; str:=trim(str); if length(str)>10 then begin str:=self.GetWeightByASC(str); if str<>self.lWeight.Caption then self.lWeight.Caption :=str; str:=''; end;end;
 
你接收到的就是可见字符不用转换直接截取就可以,我们做的地磅称重就是这么干的,地磅厂家的大多都是这样来读取数据的
 
后退
顶部