RS485串口通讯

liuhongxia1978 2008-05-29 03:04:43
PC端安装485卡,设备通过485和PC通信,请教如何写通信系统?能否给个简单的例子?万分感谢了!
...全文
4421 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
看那山瞧那水 2011-09-01
  • 打赏
  • 举报
回复
物理接口和通信协议是两回事,虽有些协议要一定的物理接口支持,比如工业上常用的MODBUS/HART等,可以在232/485上用,也可以在TCP/IP接口上运用
看那山瞧那水 2011-09-01
  • 打赏
  • 举报
回复
485是半双工通信,为什么用485?因为232只能是点对点,而485可以一对多(一主多从),还有485用的电流环方式,搞干扰强,传输距离远(232是电压型信号,一般10来米就差不多了,485理论上可以到1000米,不过我实际上最好不要超过600米,速率在9600以下)。232最少是3线,收发地,485是2线方式(所谓A/B线)。
diecode 2011-09-01
  • 打赏
  • 举报
回复
通信协议自己定
和RS232一样的
sunny8675 2011-09-01
  • 打赏
  • 举报
回复
我现在也是遇到这个问题,协议好似看不懂,有高手给个通讯协议,并解释如何根据那个协议通信开发程序吗,太感谢了。
无条件为你 2011-09-01
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 liuhongxia1978 的回复:]
楼上的兄弟:那直接用RS485通讯接口和PC通信的系统如何开发?和RS232通信在开发方面有什么区别?
[/Quote]

从软件开发角度来讲,没有任何区别。代码写法一样。
huochai555 2011-08-31
  • 打赏
  • 举报
回复
学习了.485通讯一般都有协议,按协议组帧 发给串口就可以了。
kampan 2008-06-27
  • 打赏
  • 举报
回复
N久之前用Spcomm写的一小段代码,望对你能有所帮助。

procedure TForm1.Button1Click(Sender: TObject);
begin
self.Comm1.CommName:=edit1.Text;
self.Comm1.BaudRate:=strtoint(edit2.Text);
self.Comm1.ByteSize:=Tbytesize(3);
self.Comm1.StopBits:=Tstopbits(0);
self.Comm1.Parity:=tparity(0);
try
self.Comm1.StartComm;
except
raise exception.Create('打开串口失败!');
end;

self.StatusBar1.Panels[0].Text:=edit1.text+'已打开';
self.StatusBar1.Refresh;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
self.Comm1.StopComm;
self.StatusBar1.Panels[0].Text:=edit1.text+'已关闭';
self.StatusBar1.Refresh;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
str:Pchar;
count:integer;
begin
str:=pchar(edit3.Text);
count:=length(str);
if self.Comm1.WriteCommData(str,count) then
self.Memo1.Lines.Add('已发送'+inttostr(count)+'个字符')
else
raise exception.Create('发送错误');
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
close;
end;

procedure TForm1.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
var
str:string;
strrecv:string;
begin
setlength(strrecv,bufferlength);
move(buffer^,Pchar(strrecv)^,bufferLength);
self.Memo2.Lines.Add('已收到:'+inttostr(bufferlength)+'字节的数据');
self.Memo2.Lines.Add(strrecv);
end;
sy_100000 2008-06-27
  • 打赏
  • 举报
回复
一般的485卡,实际上是一个RS-232接口卡,不过该RS-232接口卡,直接带有RS-232电平转RS-485电平功能。
PC机主板上,一般有Com1和Com2,插上485卡后,就会有Com3、Com4……。

所以编程完全和Com1\Com2一样。
小呆之家 2008-06-17
  • 打赏
  • 举报
回复
RS485与RS232的区别其实并不大,转输方式是一样的。

区别在于:RS485是差分(差分信号)传输,RS232是非差分(同分信号)传输的。

因此,RS485传输信号扰干扰能力强于RS232,故传输距离较RS232远。

就编程上来看,与RS232并没有区别。对于计算机来说如果在232串口上进行485通讯的话,
要加入一个RS232/RS485转换模块才行。




快乐老猫 2008-06-09
  • 打赏
  • 举报
回复
如果线路上只有两个设备,软件设计上跟232一致,否则在传输的数据包中夹带发送、接收端的站点编号。
DelphiFans 2008-06-04
  • 打赏
  • 举报
回复
其实就是458通讯,用SPCOMM可以完成还简单,如果PC TO PC通讯 只要别忘 跳线就是了,有的已经跳好 了
skylkj 2008-06-04
  • 打赏
  • 举报
回复
pci的扩展卡吗?
如果是的话买卡时会提供驱动吧,然后你从设备管理器里面看识别成什么设备.多半还是识别为一个串口,那你就用你操作232的方法去操作这个串口就好了,剩下的是厂商提供的驱动的事
KOOkO 2008-06-03
  • 打赏
  • 举报
回复
不管是楼主,各位大侠看见了也望回个音啊,小弟感谢了!
KOOkO 2008-06-03
  • 打赏
  • 举报
回复
楼主楼主,你是不是遇见485对485通信的问题啊,
我原来Delphi7下的232的程序,用Spcomm控件实现,且用转接口转485后没有问题;
问题是现在在PC104(内安装装嵌入式windowsXP系统)上直接就是485口,单片机上也是,如何解决呢?
反正以前的程序似乎不能用,你若解决,告诉我解决方案啊,跪求,亟待!!!!
多谢多谢,发我信箱:wujiaoyi1984@yahoo.com.cn
Corn1 2008-05-30
  • 打赏
  • 举报
回复
对于软件来说,485通信和串口通信是一回事,都是操作串口。这两者只是硬件上的区别而已,跟软件没关系的。所谓的485通信,只是在串口上加了一个转换器而已,就这么简单。
我以前做过的。
liuhongxia1978 2008-05-30
  • 打赏
  • 举报
回复
楼上的兄弟:那直接用RS485通讯接口和PC通信的系统如何开发?和RS232通信在开发方面有什么区别?
jadeluo 2008-05-30
  • 打赏
  • 举报
回复
你们老大说的是通讯协议,不是通讯接口形式。RS485是一种通讯接口。
whisht 2008-05-30
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 Corn1 的回复:]
对于软件来说,485通信和串口通信是一回事,都是操作串口。这两者只是硬件上的区别而已,跟软件没关系的。所谓的485通信,只是在串口上加了一个转换器而已,就这么简单。
我以前做过的。
[/Quote]
liuhongxia1978 2008-05-29
  • 打赏
  • 举报
回复
真的没有人搞过吗?我们老大说要发送请求贞,解析协议等等,我没有搞过所以不明白!搞过的人给指点指点!万分感谢!
luxuewei5214 2008-05-29
  • 打赏
  • 举报
回复
没用过485卡,估计和串口编程一样吧
加载更多回复(2)

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧