//下位机部份代码
switch (yRead)
{
case 'V' : // Vol
fnSendData (255) ;
break ;
//上位机部份代码
void CMultimeterDlg::OnCommMscomm()
{
// TODO: Add your message handler code here
VARIANT vrt ;
CString str ;
if (m_ctrlMScomm.get_CommEvent () == 2)
{
vrt = m_ctrlMScomm.get_Input () ;
str = vrt.bstrVal ;
GetDlgItem (IDC_SHOW) ->SetWindowTextW (str) ;
}
}
//发送方式是文本方式
m_ctrlMScomm.put_InputMode (0) ;
当我发送V时,单片机fnSendData (64) ;IDC_SHOW显示该ASCii码对应得字符,但是下位机改成fnSendData (255); 就不显示了,是因为ascii码最高到127么?关键的来了,下位机是fnSendData (255); 的时候,我的上位机不要显示ascii码,想显示255或0xff怎么办。
解决方案 »
- 关于在TXT文件中加入一列数据
- 内网realplay 用udp协议,无法打开公网视频流服器rtsp直播路径
- 谁能帮我这段managed c++的代码改写成基于mfc的啊?
- 大家帮忙看看我的滤波程序,总是不能成功(100分)
- 简单问题,关于"\\"和"\"
- 如果在菜单中使用256或以上颜色的图标或位图。象OFFICE97那样风格的。
- 如何用ADO访问ACCESS2000?
- 求教,串口通信校验方式有五种不知都是什么意思?
- ScrollInfo的nPage是什么意思,为什么系统自动改变___已解决。分享
- 高分求购Polar Draw ActiveX Control 发行版
- 如何让显示的图片保持住?
- MFC ado access 对数据表中字段进行修改
这句改成vrt的字节类型就行了(我忘了具体名了,就象你的字符型是:bstrval,它的字节好象类似byteVal,可能不对,你可以查到具体是什么名字,没有字节类型就改成short,这个我记得肯定有),其实数据上位机已收到了,只不过显示的事,
BYTE m_ReceBuff[100];
void CMy72V300AView::OnCommMscomm1()
{
VARIANT variant_inp;
COleSafeArray safearray_inp;
long i = 0,len;
switch (m_Comm1.get_CommEvent())
{
case 2:
//表示接收缓冲区内有字符
{variant_inp = m_Comm1.get_Input();
safearray_inp = variant_inp;
len = safearray_inp.GetOneDimSize();
for (i = 0; i < len; i++)
{
safearray_inp.GetElement(&i, &m_ReceBuff[i]);
}
m_Comm1.put_OutBufferCount(0);// '清空发送缓冲区
m_Comm1.put_InBufferCount(0);// '滑空接收缓冲区
safearray_inp.Clear();
}
break;
default:
break;
}
}
{
// TODO: Add your message handler code here
VARIANT vrt ;
CString str ;
BYTE temp ;
if (m_ctrlMScomm.get_CommEvent () == 2)
{
vrt = m_ctrlMScomm.get_Input () ;
temp = vrt.bVal ;
str.Format (_T ("%x"), temp) ;
GetDlgItem (IDC_SHOW) ->SetWindowTextW (str) ;
}
}
接受到的不是FF,而且是时变的