首页 新闻 会员 周边

C#上位机程序串口通讯的问题,请各位高手指点指点

0
悬赏园豆:50 [待解决问题]

用C#做了个上位机跟西门子200PLC通讯的程序,主要功能是发送给PLC一条指令,然后PLC反馈回数值来,但是目前遇到了个问题想不明白问题出在哪里,特来请教

 

PLC端已经写好了程序,用串口调试助手发送指令的话没有问题,但是用我写的程序发送PLC接受到的值就是错误的,在串口监视里看我写的程序跟串口调试助手发送的是一样的啊……

更奇怪的是我找了根USB转串口的线把23针短了之后自发自收,我的程序收发都对,但是串口调试助手的收到的是奇怪的字符……

之前没接触过串口已经完全晕菜了……希望路过的各位大大给些指点

 

下面的是串口调试助手的发送接收,上面是我自己程序的

JellySC的主页 JellySC | 初学一级 | 园豆:152
提问于:2013-07-05 15:30
< >
分享
所有回答(3)
0

既然可以发送数据,设备接到的数据,就会有返回代码,用串口调试助手转码,查下文档,看下是不是奇偶校验码或者数据格式没有写对

風吹云动 | 园豆:69 (初学一级) | 2013-07-05 16:09
0

可能是数据格式 问题  有没有要求 UTF8 或者其他格式这样的。

Tom.汤 | 园豆:3028 (老鸟四级) | 2013-07-06 13:38
0

把你用串口发送的截图,还有你程序发送的代码都贴上来。 我认为还是你的发送有问题。

朝曦 | 园豆:1073 (小虾三级) | 2013-07-07 11:10
 1         //发送
 2         private void sendToPort(string str)
 3         {
 4             if (true)//serialPort1.IsOpen)
 5             {
 6                 if (str != "")
 7                 {
 8                     str += "ED";
 9                     byte[] byteS = System.Text.Encoding.ASCII.GetBytes(str.ToCharArray());
10                     serialPort1.Write(byteS, 0, byteS.Length);
11                     System.Threading.Thread.Sleep(1000);
12                 }
13             }
14         }

代码就这样
串口发送截图是什么意思= =b

支持(0) 反对(0) JellySC | 园豆:152 (初学一级) | 2013-07-07 13:42

@StrayCat:  确认你的PLC识别的是ASCII码吗? 

我说的不清晰,我说的串口的意思是串口调试工具

支持(0) 反对(0) 朝曦 | 园豆:1073 (小虾三级) | 2013-07-07 23:51

如果你不确认识别什么样的编码,就用十六进制数是最好的

支持(0) 反对(0) 朝曦 | 园豆:1073 (小虾三级) | 2013-07-07 23:54

@朝曦: 我是用的这个

我问过写PLC端的人,他说确实是接收ASCII的

我不太懂PLC,看了看PLC的程序,接收部分是这样的,帮助上说是ASCII转16进制

应该是我发的数据格式不符合这个的要求吧……

支持(0) 反对(0) JellySC | 园豆:152 (初学一级) | 2013-07-08 08:28
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册