public bool SetHold(bool _bOnOff) { string sSendMsg; m_iCmdNo = KBS205_CMD.SetHold; sRecvMsg = ""; //sSendMsg = "0" ; //Chanel //m_pRS232C -> SendData(sSendMsg.Length() , sSendMsg.c_str()); sSendMsg = _bOnOff ? "0H" : "0L"; SendMsg(sSendMsg); return(true); }
public bool SetZero() { String sSendMsg; sRecvMsg = ""; m_iCmdNo = KBS205_CMD.SetZero; //sSendMsg = "0" ; //Chanel //m_pRS232C -> SendData(sSendMsg.Length() , sSendMsg.c_str()); sSendMsg = "0Z"; SendMsg(sSendMsg); m_iCmdNo = KBS205_CMD.None; //오토제로 응답없음. return(true); }
public bool WeightCheck() { string sSendMsg; m_iCmdNo = KBS205_CMD.SetCheck; sRecvMsg = ""; //sSendMsg = "0R" ; 원래 프로토콜인데 이렇게 하면 안됌. //SendMsg(sSendMsg); sSendMsg = "0"; //Chanel SendMsg(sSendMsg); sSendMsg = "R"; SendMsg(sSendMsg); return(true); }
protected override void DataReceived(object sender, SerialDataReceivedEventArgs e) { base.DataReceived(sender, e); if (!IsReceiveEnd()) { return; } if (sRecvMsg.IndexOf((char)0x02) < 0) { return; } //짤려서 STX가 ETX보다 높은경우. if (sRecvMsg.IndexOf((char)0x03) < sRecvMsg.IndexOf((char)0x02)) { sRecvMsg.Remove(0, sRecvMsg.IndexOf((char)0x02)); //Delete(1,m_sReadMsg.Pos((char)0x02)-1); return; //ETX } //디버깅 걸지 마시오 계속 데이터 들어와서 뻑남... string sTempMsg = sRecvMsg; sTempMsg = sTempMsg.Remove(0, 2); //처음 STX와 Indicator ID삭제 sTempMsg = sTempMsg.Remove(7, 1); //마지막 측정 데이터 외, 다른 데이터 삭제. sTempMsg = sTempMsg.Remove(1, 1); //- 0.003 이런 식으로 공백이껴있어서 뺌. double dTemp = 0.0; if (double.TryParse(sTempMsg, out dTemp)) { m_dLoadCellData = dTemp; } else { Log.Trace("LoadCellData Err", sRecvMsg); } //sRecvMsg = ""; m_iCmdNo = KBS205_CMD.None; }