我是sxslyy请各位帮我,不然我会被炒。
我有下面的程序接收串口来的信息,信息为:“v0600212c888你好888“
可如果这条信息是从windows中发出的就接收正常。可要是从dos下来的就
变成了“v0600212c888888“其中的汉字不能显示,求救!!!!!!!!
LRESULT CTerminalView::OnCommNotify(WPARAM wParam,LPARAM lParam)
{
char buf[MAXBLOCK/4];
CString str;
int nLength,nTextLength;
CTerminalDoc* pDoc=GetDocument();
CEdit& edit=GetEditCtrl();
if(!pDoc->m_bConnected||(wParam & EV_RXCHAR)!=EV_RXCHAR)
{
SetEvent(pDoc->m_hPostMsgEvent);
return 0L;
}
nLength=pDoc->ReadComm(buf,100);
if(nLength)
{
nTextLength=edit.GetWindowTextLength();
edit.SetSel(nTextLength,nTextLength);
for(int i=0;i<nLength;i++)
{
switch(buf[i])
{
case '\r':
if(!pDoc->m_bNewLine)
break;
case '\n':
str+="\r\n";
break;
case '\b':
edit.SetSel(-1,0);
edit.ReplaceSel(str);
nTextLength=edit.GetWindowTextLength();
edit.SetSel(nTextLength-1,nTextLength);
edit.ReplaceSel("");
str="";
break;
case '\a':
MessageBeep((UINT)-1);
break;
case '\0x0E':
break;
case '\0x0F':
break;
default:
str+=buf[i];
}
}
edit.SetSel(-1,0);
edit.ReplaceSel(str);
}
SetEvent(pDoc->m_hPostMsgEvent);
return 0L;
}
问题点数:20、回复次数:8Top
1 楼zjh()回复于 2002-03-24 16:26:54 得分 20
我想问一下,那几个case那里是做什么呢?
Top
2 楼sxslyy(孤松傲雪)回复于 2002-03-24 16:29:44 得分 0
是滤回车,换行,退格,响钤的Top
3 楼zjh()回复于 2002-03-24 16:41:30 得分 0
WIN和DOS下面的发送程序是同样的吗?
你能先确认DOS下时,发出来的字串是正确的吗?Top
4 楼sxslyy(孤松傲雪)回复于 2002-03-24 16:49:07 得分 0
dos 下发出的字串是正确的,因为它是一寻呼台的程序,
但WIN和DOS下面的发送程序是不同,win下的是我自己编的用它发我能接收正常
可我必须接收来自dos下的信息,能帮我吗?Top
5 楼zjh()回复于 2002-03-24 16:54:20 得分 0
你能否先把收到的字串用16进制全打出来,看看是否有那两个中文字符。
有QQ吗,或者我们直接用QQ讨论,应该比这个方便些。Top
6 楼sxslyy(孤松傲雪)回复于 2002-03-24 16:58:22 得分 0
31378606Top
7 楼sxslyy(孤松傲雪)回复于 2002-03-24 16:59:00 得分 0
能把你的qq给我吗?Top
8 楼zjh()回复于 2002-03-24 17:00:42 得分 0
42243797Top
相关问题
- 请各位高手帮帮我了,不然我死定了.
- 各位老大,大姐,救命啊help~!!!不然就真的失戀了
- 几个小问题,急盼各位大虾解决,不然死定了~
- 自编程序打包安装后,程序运行一段时间后,他会自动关掉,无任何错误提示!请各位大侠提供宝贵参考意见,不然老板炒我了!!!
- 快帮忙解决打印问题啊,不然我要下岗了!!各位兄弟!!
- 明天开始好好工作。不然要被炒了。 (送分)
- 麻烦各位“有钱”的大侠们别再:“高兴!大家往我身上浇几盆水吧,不然我就兴奋过度了!”
- =====这是个网络问题,请各位大哥帮帮小弟的忙,不然我又得下岗回家写程序了=====
- 我的程序已完成了75%,请各位帮我解决剩下25%的问题。不然就卷铺盖走人了。
- 中文全文检索,我试了好几天,头都大了,请各位大哥大虾快来帮忙,不然我会疯的!




