往串口下发消息后,从串口返回的消息不全,收到的消息就是下发的消息
// 对应到Serial.dll中的Write函数,函数接口完全相同
TriStatus fx_Write(const TriFunctionId *functionId,
TciParameterList *parList,
TciValue *returnValue)
{
CHECK_PARA_COUNT(3);
GET_CHECK_PARA(pPara0, 0, TciCharstringValue , TCI_IN); //端口名称
GET_CHECK_PARA(pPara1, 1, TciCharstringValue , TCI_IN); //需要发送的命令
GET_CHECK_PARA(pPara2, 2, TciCharstringValue, TCI_OUT);
GET_CHECK_RETURN(TciIntValue); //实际写入命令长度
string sErr ="";
if(false == InitRecoreFlg)
{
sErr = "请先开启串口";
AddErrorLog(sErr);
pPara1->SetString(sErr);
pReturn->SetInteger(0);
}
string csPortName = pPara0->GetString();
//string csSerialCmd = pPara1->GetString();
TCHAR csSerialCmd[] = _T("version");
int iSerialTag = GetSerialNo(csPortName);
bool bRet =false;
if(MAX_SerialNum == iSerialTag)
{
sErr = "找不到相应串口信息";
AddErrorLog(sErr);
pPara1->SetString(sErr);
pReturn->SetInteger(0);
}
else
{
//DWORD iNum = SerialRecordList[iSerialTag].pComm->Write(/*csSerialCmd*/sTmp/*,csSerialCmd.length()*/);
wchar_t buf[1024] = {0};
SerialRecordList[iSerialTag].pComm->Write(_T("version"));//写入10个字节
wchar_t *buf1 = SerialRecordList[iSerialTag].pComm->ReadString(buf, 1024,INFINITE);//读出5个字节 并返回实际读出数
//AddErrorLog(buf);
pPara1->SetString("");
pReturn->SetInteger(0);
//pReturn->SetInteger(iNum);
}
return TRI_OK;
}