串口收发数据 for循环中 或者Ontimer中发出指令,接收不到反馈信号。
PC与温度采集ADAM4015模块数据交互。
我PC 发送指令读取温度,ADAM反馈回温度值,PC读取结果。
单独发送指令:
SerialPort.WriteToPort((LPCTSTR)("#030\r")); //发送读数指令
接收:
LONG CSetExDlg::OnComm(WPARAM ch,LPARAM port)
{
dateLength++;
CString str(_T(""));
str.Format("%c",ch);
if (dateLength > 8 )
{
if(dateLength > 9){
dateLength = 1;
m_strRxMsg.Empty();
}
}
m_strRxMsg += str; //将接收到的字符存入编辑框对应的变量中
UpdateData(FALSE); //将接收到的字符显示在接受编辑框中
}
可以实现。
但是比如 用多次发送
for(i=0;i<10;i++)
{
SerialPort.WriteToPort((LPCTSTR)("#030\r")); //发送读数指令
}
这时候就不能收到十次的反馈值,只有一次的反馈值可以接收到。
另外
在使用OnTimer函数时候,在Ontimer中:
void CProofDlg::OnTimer(UINT nIDEvent) //
{
if (1 == nIDEvent)
{
SerialPort.WriteToPort((LPCTSTR)("#030\r")); //发送读数指令
}
}
则
接收:
LONG CSetExDlg::OnComm(WPARAM ch,LPARAM port)
{
......
}
不能够接收到反馈的值。
采用Ontimer的意思是改成自动化,IO信号交互中,触发即可采集温度。
最上面直接发SerialPort.WriteToPort((LPCTSTR)("#030\r")); //可以理解为手动采集。
相关推荐
如何在51单片机上实现串口收发命令
串口通信在电子行业中应用较广,通过上位机发送命令,实现各种功能的控制及数据的反馈。本文就是在51单片机上实现串口收发命令,程序调试正常,可以运用到控制系统中。
基于ESP32的WiFi DCC控制器:开源模型铁路数字控制方案
数字指令控制(DCC)是模型铁路实现多机车独立控制的核心协议,它通过叠加在轨道电源上的数字信号编码,实现对机车速度、方向及灯光音效的精确操控。其技术原理在于将控制指令调制为特定时序的方波,利用微控制器生成并放大后驱动轨道。随着物联网和嵌入式技术的发展,传统专用控制器正逐步向网络化、智能化演进。本项目结合ESP32双核处理器的高性能与WiFi通信的便捷性,构建了一个基于WebSocket实时通信的DCC控制器。通过硬件PWM确保信号时序精准,并利用异步Web服务器提供跨平台控制界面,显著降低了数字沙盘系统的构
51单片机简单的中断法串口收发程序,51单片机串口数据收发
利用串口调试助手给单片机发数据,单片机会将改数据原样送回电脑
用于串口数据收发,串口发送与接收用调试工具
用于串口数据收发,串口发送与接收用调试工具,可以实现16进制的发送和接收,程序是为自己调试用而编写的,不知大家是否需要,有什么问题可以告诉我,86487669@sohu.com
STM32F103实现串口收发数据功能
串行接口是一种可以将接收来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时可将接收的串行数据流转换为并行的数据字符供给CPU的器件。一般完成这种功能的电路,我们称为串行接口电路。 串口通信(Serial Communications)的概念非常简单,串口按位(bit)发送和接收字节的通信方式。 中断发送方式的基本过程是:每发送一个字节,该字节发送完毕引发中断,中断处理程序再发送下一个字节……直到发送完成。 该接口不需要等待接收完成再返回,整个接收过程不需要用户干预,最好检查下返回值,看有没有调用成功,因为如果上次数据还没接收完整,处理忙状态,是不可以再发起新的接收过程的。 中断在硬件层面的触发方式:如果是电平触发的中断,在中断式发送函数中会使能相应的中断,因为发送缓冲区为空,其所处的电平状态就在中断功能被使能后会直接触发中断,导致第一个字节在中断处理函数中被发送出去


