CSerialport串口程序与PLC通信问题

问题描述

CSerialport串口程序与PLC通信问题

利用CSerialport类编写的串口程序,可正常接收龚建伟老师的串口调试助手发出的十六制信息,但收不到S7200发出的信息。
以下是接收函数:
LONG CMy22Dlg::OnComm(WPARAM ch,LPARAM port)
{

CString strtemp1,strtemp2;
LONG len;
int n=0;

BYTE m_byte=0;
CByteArray ReceiveData;
//ReceiveData.SetSize(8);
strtemp1.Format("%d",ch);
n=atoi(strtemp1);
m_byte=n;
ReceiveData.Add(m_byte);
//count++;
len=ReceiveData.GetSize();

for(int k=0;k<len;k++)
{
    BYTE bt=ReceiveData.GetAt(k);
    rcv[k]=bt;
    strtemp2.Format("%d",bt);
    m_ReceiveMsg+=strtemp2+" ";
}
UpdateData(FALSE);
if(n==97)
    {
       //count=0;
       ReceiveData.RemoveAll();
       m_ReceiveMsg.Empty();
    }

return 0;

}

解决方案

用串口调试助手看下

解决方案二:

用工具先抓一下你的这个串口设备发送的数据格式,各种参数是什么,然后跟你代码中的配置来对比

解决方案三:

先用串口丹东助手 看看 能不能收到S7200发出的信息?
如果能,则检查一下 CSerialport 的参数设置,如:波特率、起始/停止位,流控等.

时间: 2024-09-24 08:32:32

CSerialport串口程序与PLC通信问题的相关文章

串口通信-用linux串口与PLC通信,不通

问题描述 用linux串口与PLC通信,不通 用linux串口与PLC通信,没有返回正确的数据,但是在windows串口上是可以的,也就是说波特率一些的应该是对的.但是在linux上就是不行,这是什么原因. 解决方案 linux串口通信协议编程详解 解决方案二: 先多加一些调试信息等,看你的代码是如何运行的,是否有哪一步出错了

串口通信-串口程序发送接收数据问题 (没有据传输)

问题描述 串口程序发送接收数据问题 (没有据传输) //接收数据 void ReceiveChar() { BOOL istrue; DWORD de = 0; char buffer[MAX] = { 0 }; DWORD data; BOOL f; DWORD doe; COMSTAT coms; BOOL m; OVERLAPPED over; /*********串口事件的设置***************/ istrue = SetCommMask(hComm, EV_RXCHAR |

基于Silverlight的本地应用程序之间的通信

通过本地消息传递,您可以在单台计算机上运行的多个 Silverlight 插件之间创建通信通道.您通常 在单个网页中承载这些插件,并且使用本地消息传递来协调其行为.这样,您可以创建将多个基于 Silverlight 的应用程序与基于其他技术的内容结合在一起的复杂布局. 例如,假定您要为基于 HTML 的网站提供基于 Silverlight 的导航系统.您可以使用 Silverlight 来创建菜单栏和侧栏,并且使用本地消息传递来保持其状态同步.另一个方案就是创建具有跨越侧栏广告 的动画效果的基于

VB6.0 COM串口程序采集的数据怎么在Plot曲线控件中实时显示,求各位大神了!谢谢

问题描述 VB6.0 COM串口程序采集的数据怎么在Plot曲线控件中实时显示,求各位大神了!谢谢 RT,VB6.0 编写好COM串口程序采集的数据怎么在Plot曲线控件中实时显示,求各位大神了!谢谢 解决方案 用VB的话还是MSChart比较好用.串口得到数据按照一定的协议解析后直接绑定到控件上就可以了. 解决方案二: http://wenku.baidu.com/link?url=dzFdj7tuMl4yr5NZUIooA2zAwZ5NpT8N8y6P6Z8c7T0k0GQRnOKGa95M

串口程序接收-串口程序可发送,不能接收接收

问题描述 串口程序可发送,不能接收接收 各位前辈,我在这里下载了一个串口精灵,MFC的.里面的串口程序发送正常,不能接收,variant_inp = m_Com.get_Input()这句过不去.单步调试说缺少源文件frame.cpp,我搜了安装的包也没找到.小的是初学者,请大神指教一下这是什么原因,我应该怎么办

vc-急!VC编写的串口程序,但数据老是接收不全,请大家看看问题出在哪里,在此先谢谢!!

问题描述 急!VC编写的串口程序,但数据老是接收不全,请大家看看问题出在哪里,在此先谢谢!! 下面是处理串口接收数据的函数,我是用一个进程函数来实现的,串口采用的是同步方式,问题出在下面这一段函数,老是没接收完就退出了: 下面为处理接收数据的进程函数 解决方案 我在调试的时候,字符串str3都可以正常接收,但一自动运行,str3里面的数据就会只有一小段. 解决方案二: 先不对收到的内容进行处理,将收到的内容一个个打印出来看下. 解决方案三: 此问题已解决,软件没有问题,是硬件连线的问题,望以后有

大家谁有Fortran程序和其他程序语言socket通信,实现数据交换的例子?

问题描述 大家谁有Fortran程序和其他程序语言socket通信,实现数据交换的例子? 大家谁有Fortran程序和其他程序语言socket通信,实现数据交换的例子? 解决方案 用c去实现网络通讯,fortran去调用 http://blog.chinaunix.net/uid-21498513-id-143992.html 解决方案二: http://blog.chinaunix.net/uid-21498513-id-143992.html

这个单片机串口程序为何输入字符串而熟出的是ascll码?

问题描述 这个单片机串口程序为何输入字符串而熟出的是ascll码? #include //包含头文件//毫秒级延时函数void delay(unsigned int x){ unsigned char i; while(x--) { for(i = 0;i < 120;i++); }}//字符发送函数void putchar(unsigned char data1) { SBUF = data1; //将待发送的字符送入发送缓冲器 while(TI == 0); //等待发送完成 TI = 0;

网络编程-有关于Socket的问题,简单的服务器程序与客户程序之间的通信

问题描述 有关于Socket的问题,简单的服务器程序与客户程序之间的通信 问题是这样的,我写了两个简单 的服务器程序,其中一个与一个简单的客户程序可以连续发多次信息,而另一个则不可以,发一次它就会不能继续再发了,程序并没有停止运行,而是服务器收不到它的信息了,求大侠帮忙看下啦~以下为两个服务器程序代码.因为我用的是同一个客户程序测试,所以跟client无关 吧. //这个是可以连续发送信息的服务器 package Test20140210; import java.io.BufferedRead