VC++串口通信 接收到一条记录后如何换行,而不是每收到一个字符就换行,如何才能做到
解决方案 »
- vc2010 sdi 采用office界面 但是提示对话框 风格如何也采用office风格呢?
- 写vc程序空行规则是什么啊?
- --------Menu的简单的问题-------
- VC如何开发ISAPI程序
- 怎样把要查询的记录全部找出来?
- 如何设置我的应用程序保存文件的后缀名?
- 怎样才可以把一个窗口置于最底端(跟最顶端相反)
- 帮我看看下面几行代码,为什么我创建的位图是单色的?
- 高手快请进来显显威风!(初学者的小小问题!积极给分!)
- 难一点的问题,,如何提取主板序列号?如何读取BIOS日期?
- 如何用_stscanf读出字符串中的3个字符串! 感觉这是语法问题~只是我不会~请教高手~
- 我写的存储CBitmap*的链栈的错误实在找不出了 各位大仙帮帮忙 代码不长
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[2048]; //设置BYTE 数组An 8-bit integerthat is not signed.
CString strtemp;
CString strComData;
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_strData+=strtemp; //加入接收编辑框对应字符串
strComData+=strtemp;
}
deal_with_COMDATA(strComData); //对接收数据的处理函数,涉及到数据库
m_strData+="\r\n";
}
UpdateData(FALSE); //更新编辑框内容
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[2048]; //设置BYTE 数组An 8-bit integerthat is not signed.
CString strtemp;
CString strComData;
int i=0;
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_strData+=strtemp; //加入接收编辑框对应字符串
strComData+=strtemp;
}
deal_with_COMDATA(strComData); //对接收数据的处理函数,涉及到数据库
i++;
if(i==4) //每5个换一行
{
m_strData+="\r\n";
i=0;
}
}
UpdateData(FALSE); //更新编辑框内容
for(k=0;k <len;k++) //将数组转换为Cstring 型变量
{
BYTE bt=*(char*)(rxdata+k); //字符型
strtemp.Format("%c",bt); //将字符送入临时变量strtemp 存放
m_strData+=strtemp; //加入接收编辑框对应字符串
j++;
if(j==8){
m_strData+="\r\n";
j=0;
}
strComData+=strtemp;
}
deal_with_COMDATA(strComData); //对接收数据的处理函数,涉及到数据库
就增加一个计数的变量mm
if(mm%8==0)
m_strData+="\r\n";
这样不就可以了么
safearray_inp=variant_inp; //VARIANT 型变量转换为ColeSafeArray 型变量
len=safearray_inp.GetOneDimSize(); //得到有效数据长度
for(k=0;k <len;k++)
safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE 型数组
这段代码有问题,我用debug看了,len始终等于1,下位机发的记录被拆开了,如何才能让len=8呢????
你自己前面代码有问题怪谁啊
m_ctrlComm.SetRThreshold(8);就行了,我也遇到过