写了一个单片机的测试程序,想从串口中读取数据,但是不知道怎么把它实时显示出来
读串口函数int Read_Com(char *strread,int lenread);
//读串口,lenread代表读数据长度,strread代表将读到数据保持的地址。怎么做才能使得当单片机有数据发送上来时,我的测试软件时随时读取并显示出来要用多线程技术吗
读串口函数int Read_Com(char *strread,int lenread);
//读串口,lenread代表读数据长度,strread代表将读到数据保持的地址。怎么做才能使得当单片机有数据发送上来时,我的测试软件时随时读取并显示出来要用多线程技术吗
解决方案 »
- LNK2001 packet_handler
- 请教:CListView怎么用?CListView和CListCtrl的区别与联系又是什么呢?谢谢~
- 文档保存使用系统做好的保存方法(使用序列化),但是保存的文件前面有其他的内容,怎么去掉?
- 单击CListCtrl控件中某行某列得到item,subitem不正确,item有时为-1,何故??
- 这是什么错误,太奇怪了???????,说找不到什么预编译的指导语句
- 做了一个切分窗口(CTreeView和CListView),如何合理的在TreeView中获得ListView的指针
- 在win32 dll中能否支持MFC类库???
- VisualStudio (嗷~~~)来领分,谢谢呀
- 怎样得到局域网中所有的域和该域名下所有的计算机?
- 谁能用最简单的方法取得Buffer中的字符串?
- 如何得到edit control中的数据,并转换成int型。
- 升级了,散分
这是板上程序还是PC的?Read_Com是什么?
一个异步处理线程。
现在的问题是,从串口里来的数据是不定时,如果单片机有数据发送到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); //字符型
strtemp.Format("%c",bt); //将字符送入临时变量strtemp存放 m_strRXData+=strtemp; //加入接收编辑框对应字符串
}
}
}