15,471
社区成员
发帖
与我相关
我的任务
分享
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;
}
}
}
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;
}
}