串口和单片机通信的问题

SNSCZ1985 2007-05-13 05:37:24
单片机内数据处理是16进制的形式,例如PC发送给单片机一组数据:
A5 5A 01 01 FF
单片机回复一组16进数: 67 76 01 00 02 03 00 00 00 00

现在知道数据的长度。PC机收发数据呢?我看了龚建伟的文章,还是搞不懂啊!

例如他做的收的部分:
void CSCommTestDlg::OnComm()
{
// TODO: Add your control notification handler code here
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[2048]; //设置BYTE数组 An 8-bit integerthat is not signed.
CString strtemp;
if(m_ctrlComm.GetCommEvent()==2) //事件值为2表示接收缓冲区内有字符
{
variant_inp=m_ctrlComm.GetInput(); //读缓冲区
safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变量
len=safearray_inp.GetOneDimSize(); //得到有效数据长度
for(k=0;k<len;k++)
safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组
for(k=0;k<len;k++) //将数组转换为Cstring型变量
{
BYTE bt=*(char*)(rxdata+k); //字符型
if(m_ctrlHexDisplay.GetCheck())
strtemp.Format("%02X ",bt); //将字符以十六进制方式送入临时变量strtemp存放,注意这里加入一个空隔
else
strtemp.Format("%c",bt); //将字符送入临时变量strtemp存放

m_strRXData+=strtemp; //加入接收编辑框对应字符串
}
}
UpdateData(FALSE); //更新编辑框内容
}

每收到一个字符就触发一个OnComm()事件,那么为什么还要计算得到的数据长度呢?
len=safearray_inp.GetOneDimSize(); //得到有效数据长度
for(k=0;k<len;k++)
safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组
这个之后,是不是rxdata里头保存的就是收到的16进制数了?

那这样之后,是不是把里头的数据直接转换成ASC码再显示呢?

请回答我的疑惑,或者帮我写个代码也行啊!
PC发给单片机的数据是: A5 5A 01 01 FF,其实A5 5A是包头,01是单片机地址,后一个01是命令,FF是异或和校验
单片机发给PC的是:67 76 01 。。。FF,67和76是包头,01是地址,。。。号部分是6个字节的16进制数,分别是5字节温度数据和1字节开关状态数据,FF是校验和。
...全文
299 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
LiChenYue 2007-05-17
  • 打赏
  • 举报
回复
学习一下
长尾巴的悟空 2007-05-14
  • 打赏
  • 举报
回复
向四颗星看齐.
菜牛 2007-05-13
  • 打赏
  • 举报
回复
因为读进来的是二进制数,为了转换为字符串显示,需要得到二进制数据缓冲区的大小,再逐个转换为字符。字符只是为了便于查看,对于通讯来说不需要转换。
cangwu_lee 2007-05-13
  • 打赏
  • 举报
回复
不懂 MFC 。 ding
SNSCZ1985 2007-05-13
  • 打赏
  • 举报
回复
UP

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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