串口通信问题

遇到个问题,用vc++做串口通讯时,第一次按钮控件点击有效,但第二次按钮控件点击时命令无法响应。程序是用API函数写的。可能是关闭函数的问题,但又不知如何解决。请大家不吝... 遇到个问题,用vc++做串口通讯时,第一次按钮控件点击有效,但第二次按钮控件点击时命令无法响应。程序是用API函数写的。可能是关闭函数的问题,但又不知如何解决。请大家不吝赐教啊。程序如下:
void CMovingCaptureDlg::OnUpbutton()
{
// TODO: Add your control notification handler code here
CString str;
GetDlgItemText(IDC_UPBUTTON,str);
m_mycontrol.Open(1,9600);
if(str=="上转")
{
m_mycontrol.TurnUp();
SetDlgItemText(IDC_UPBUTTON,"停止");
GetDlgItem(IDC_DOWNBUTTON)->EnableWindow(FALSE);
}
else
{
if(str=="停止")
{
m_mycontrol.Stop();
SetDlgItemText(IDC_UPBUTTON,"上转");
GetDlgItem(IDC_DOWNBUTTON)->EnableWindow(TRUE);
}
}
}
//云台上转
void CControlWT::TurnUp()
{
UpBuffer="U";
SendData( UpBuffer, 1);
return;
}

DWORD CControlWT::SendData(char *buffer, DWORD dwBytesWritten)
{
if( !m_bOpened || m_hComDev == NULL ) return( 0 );
DWORD dwErrorFlags;
COMSTAT ComStat;
ClearCommError( m_hIDComDev, &dwErrorFlags, &ComStat );
BOOL bWriteStat;
bWriteStat = WriteFile( m_hComDev, buffer, dwBytesWritten, &dwBytesWritten,
&m_OverlappedWrite );
if( !bWriteStat)
{
if ( GetLastError() == ERROR_IO_PENDING )
{
WaitForSingleObject( m_OverlappedWrite.hEvent, 1000 );
return dwBytesWritten;
}
return 0;
}
return dwBytesWritten;

}
回复3楼:有效是指云台可以响应命令,比如说:我点击“上转”可以实现上转,但是点停止或下转就没有响应,云台继续上转,停不下来,除非关电源。而用“串口调试助手”是没有上述问题的。但是“串口调试助手”是用ActiveX控件 Microsoft Communications Control做的。我用的是API函数。
展开
 我来答
风轻云度
2008-06-10 · TA获得超过1423个赞
知道大有可为答主
回答量:1835
采纳率:0%
帮助的人:0
展开全部
建议将串口通讯部分放到线程里来做,对UI的处理通过发消息的方式,这是通常的做法。
如果阻塞调用,单线程来做的话UI死是常事。因为串口通讯有可能发生异常。
建议起线程做。
百度网友48d5f169c
2008-06-10 · 超过11用户采纳过TA的回答
知道答主
回答量:75
采纳率:0%
帮助的人:0
展开全部
不明白你这个void CMovingCaptureDlg::OnUpbutton()里面为什么要将按钮在“上转”以后置成灰色,然后又一个判断“停止”再打开的按钮逻辑。

如果是云台不响应你的程序中的串口命令,可使用串口调试助手,然后多次比较你的程序发送云台控制指令的串口数据包是否正确。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
研究报告站
2008-06-10 · TA获得超过195个赞
知道小有建树答主
回答量:441
采纳率:0%
帮助的人:323万
展开全部
第一次按钮控件点击有效,但第二次按钮控件点击时命令无法响应。这句话讲得不太明白,有效是指什么有效?无法响应是指什么无法响应?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式