关于串口多线程问题

Moujiker 2014-03-10 08:46:02
在MFC的界面中添加一串口通信控件,对应的消息处理事件函数OnCommMscomm1中定义了一系列的判断语句:if(strtemp=="81")A=true;if(strtemp=="82")B=true;另外在另一函数中需要根据根据A、B的值当判断条件并进一步执行相应的动作,之后还要将A、B置FALSE,问题:OnCommMscomm1是不是一个线程函数?这样的话这两个线程函数应该是需要线程同步吧?[
...全文
63 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Moujiker 2014-03-10
  • 打赏
  • 举报
回复
第一个代码是串口中的响应函数对应代码,第二个是另一个开辟线程中的代码
Moujiker 2014-03-10
  • 打赏
  • 举报
回复
CHospitalDlg *pHos=(CHospitalDlg*) pParam;
	CTransform cto;
	CWnd *pWnd   =  AfxGetMainWnd();
	HWND hHwnd = pWnd->m_hWnd;
	while (turing)
	{
		if (pack.available && !pack.fault)
		{
			//补发开袋信号
			if (pack.openbag)
			{
				CByteArray hexdata; //CByteArray 是一个动态字节数组
				CString a;
				a="000043";
				int len=cto.String2Hex(a,hexdata);
				/*CMscomm1 m_mscomm;*/
				pHos->m_mscomm.put_Output(COleVariant(hexdata));
				pack.openbag=FALSE;
			}

			//上袋后同步带运行一个工位
			if (pack.sentbag)  //包装机上袋
			{
				g_CtrlCard.Setup_Pos(1, 0, 0);    //逻辑位置设置为零
				g_CtrlCard.Setup_Pos(1, 0, 1);    //实际位置设置为零
				g_CtrlCard.Sym_AbsoluteMove( 1, 300000,  0 , 108476, 0.2);
				pWnd->SetTimer(DELAY5000,1500,NULL);
				pack.sentbag=FALSE;
			}
		}
	
	  }
Moujiker 2014-03-10
  • 打赏
  • 举报
回复
	for(k = 0;k < len;k++) //将数组转换为Cstring型变量
		{
			BYTE bt = *(char*)(rxdata+k); //字符型
			strtemp.Format(_T("%02X "),bt); //将字符以十六进制方式送入临时变量strtemp存放,注意这里加入一个空隔

			if (strtemp == "80 ")//1  包装机故障			10000000		0x80
			{
				pack.fault = TRUE;
				pack.available = FALSE;
			}

			if (strtemp == "81 ")//2  包装机准备好			10000001		0x81

			{
				pack.available = TRUE;
				pack.fault = FALSE;
			}

			if (strtemp == "82 ")//3  包装机上袋动作		10000010		0x82

			{
				pack.sentbag = TRUE;
			}

			if (strtemp == "83 ")//4  包装机转盘动作		10000011		0x83

			{
				pack.turning = TRUE;
			}

			if (strtemp == "84 ")//4  包装机开袋失败		10000100		0x84
			{
				pack.openbag = TRUE;
			}

			if (strtemp == "88 ")//5  包装机取袋成功		10001000		0x88
			{
				pack.retrievebag = TRUE;
			}
		}

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧