VC串口编程问题,利用的是CSerialPort类。请各位帮帮忙!给了好的意见的还有加分~~ 5

我用的是CSerialPort这个类来实现的。就是我按下“打开串口”的按钮后,开始接收数据,程序正常工作;但是当我按下“关闭串口”(里面我是调用了CloseMonitor... 我用的是CSerialPort这个类来实现的。就是我按下“打开串口”的按钮后,开始接收数据,程序正常工作;但是当我按下“关闭串口”(里面我是调用了CloseMonitoring这个函数)后,再重新按“打开串口”之后程序出现问题、电脑也像死机一样,不动了。。谁有解决方法没?给了好的意见的还有加分~~ 展开
 我来答
njgcjjw
2012-05-16 · TA获得超过114个赞
知道答主
回答量:74
采纳率:0%
帮助的人:78.6万
展开全部
CSerialPort的关闭串口是有问题的,可以把CSerialPort中closePort()函数改为:
void CSerialPort::ClosePort()
{
// if the thread is alive: Kill
if (m_bThreadAlive)
{
MSG message;
while (m_bThreadAlive)
{
if(::PeekMessage(&message,m_pOwner->m_hWnd,0,0,PM_REMOVE))
{
::TranslateMessage(&message);
::DispatchMessage(&message);
}
SetEvent(m_hShutdownEvent);
}
TRACE("Thread ended/n");
}

if(m_szWriteBuffer != NULL) //清除写缓存
{
delete [] m_szWriteBuffer;
m_szWriteBuffer= NULL;
}

if(m_hComm) //关闭串口
{
CloseHandle(m_hComm);
m_hComm = NULL;
}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
迪凯特科技(北京)有限公司
2023-07-28 广告
单片机串口通信的原理是利用单片机的串口通信模块,通过把数据转化为一位一位的用时序方式传送数据,实现单片机与外部设备之间的数据通信。 串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以... 点击进入详情页
本回答由迪凯特科技(北京)有限公司提供
来自兰亭奢华的红花刺槐
2012-05-04
知道答主
回答量:36
采纳率:0%
帮助的人:14.8万
展开全部
你在关闭串口的那个函数里面 要把enable设置成true 否则关了就没办法打开了
追问
??什么意思?enable是什么?是属性吗?没有这个吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式