如何获取电子称的称重重量信息(200)

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

Mivier

Unregistered / Unconfirmed
GUEST, unregistred user!
我这有一个关于串口编程的问题想请教各位,还请帮忙解决一下。我现在手头上有一个电子称,要如何才有办法获取电子称上的读数,他的说明书上有写数据格式等,但由于我没有做过类似串口开发,不知从何搞起。电子称是上海耀华称重系统有限公司的XK3190—A1+型号。烦请帮忙一下。
 
我们也需要这个,来顶一下
 
CreateFile打开串口SetCommState设置串口,如波特率、数据位等然后用WriteFile发指令ReadFile收设备返回的数据最后,CloseHandle关闭打开的串口资源当然,最简单的方法是用第三方控件
 
参考下吧,用mscomm试验下入个门,进阶可用spcomm或者楼上的方法:http://www.delphibbs.com/keylife/iblog_show.asp?xid=4529
 
Cport好用
 
你可以使用COMM32控件。
 
个人觉得还是直接用API好,串口通信方面的API就20来个,用API纯绿色,干静,容易控制。
 
可以用开源的控件试试:http://sourceforge.net/projects/comport/
 
使用MSCOMM试试,哪位能提供一下Mscomm.reg, Mscomm32.ocx,Mscomm32.dep 这几个安装文件?发到我的QQ邮箱 491693439@qq.com ,谢谢
 
哪位能提供一下比较完整的代码,谢谢帮忙
 
好急,还没搞定,大家帮帮忙
 
开源的肯定是有完整源代码了,不然怎么叫开源?
 
这个很简单:)只要有仪表的协议就可以了,我用过A9+的, 串口的程序网上很多
 
unit ReadData;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, SPComm, ExtCtrls;type TReadData_win = class(TForm) Button1: TButton; Button2: TButton; Timer1: TTimer; Edit1: TEdit; Timer2: TTimer; Comm1: TComm; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Comm1ReceiveData(Sender: TObject; Buffer: Pointer; BufferLength: Word); procedure Timer1Timer(Sender: TObject); procedure Timer2Timer(Sender: TObject); private { Private declarations } public { Public declarations } len:word; data:integer; buf:array[0..500] of char; end;var ReadData_win: TReadData_win;implementation{$R *.DFM}procedure TReadData_win.Button1Click(Sender: TObject);begin try comm1.StartComm; except showmessage('串口打不开!!!'); end;end;procedure TReadData_win.Button2Click(Sender: TObject);begin comm1.StopComm;end;procedure TReadData_win.Comm1ReceiveData(Sender: TObject; Buffer: Pointer; BufferLength: Word);var i:word; bb:^char;begin bb:=buffer; for i:=0 to bufferlength-1 do begin Buf:=bb^; inc(bb); end;len:=BufferLength;end;procedure TReadData_win.Timer1Timer(Sender: TObject);var i:integer; tempstr:string;begintry i:=Pos(#2, buf); if i > 0 then tempstr:=Copy(buf,i+1, 8); edit1.text:=tempstr; try data:=strtoint(edit1.text); except end;exceptend;end;procedure TReadData_win.Timer2Timer(Sender: TObject);begin// comm1.WriteCommData('p',1);end;end.
 
lcm40,为什么总提示串口打不开
 
大侠们,帮帮忙,还是搞不定啊。。。急!!!
 
var dcb:TDCB; tmouts: TCommTimeouts;//打开串口 hCom := CreateFile('com1', generic_write+generic_read, 0, nil, open_existing, file_attribute_normal, 0); Assert(hCom<>INVALID_HANDLE_VALUE,'Oper port failure');//设置串口参数 GetCommState(hCom,dcb); dcb.BaudRate := 9600; dcb.ByteSize := 8; dcb.Parity := NOPARITY; dcb.StopBits := ONESTOPBIT; SetCommState(hCom,dcb);//设置收发超时 tmouts.ReadIntervalTimeout := 10; tmouts.ReadTotalTimeoutMultiplier := 1; tmouts.ReadTotalTimeoutConstant := 100; tmouts.WriteTotalTimeoutMultiplier := 1; tmouts.WriteTotalTimeoutConstant := 0; SetCommTimeouts(hCom,tmouts);//设置收发缓冲区大小 SetupComm(hCom,512,512);//向设备发数据 bufSend为发送缓冲区,是字符或字节数组,按你的设备协议填充 WriteFile(hCom,bufSend,bytesToSend,bytesToSended,nil);//等一会收数据(1秒) sleep(1000);//收数据,bufRec为接收缓冲区,bufRecbytesReaded为实际收到的字节数 ReadFile(hCom,bufRec,bytesToRead,bytesReaded,nil);//然后按协议进行解析数据 if bytesReaded>0 then begin //解析数据 end;......//操作完成或者退出程序时,关闭串口 CloseHandle(hCom);差不多这样子。实际编程时,一般用线程来发送/接收数据
 
我有完整的地磅称重软件解决方案,尤其程序,客户使用的特别好,可以根据客户需要修改程序,我的地磅软件还带有车辆监控和抓拍,如果需要和我联系!我们也可以合作开发用户程序!根据客户需要修改程序!QQ:854115178电话:13853998172 山东临沂的
 
包出去做算了[:D]
 
后退
顶部