[問題] 模擬 rs232 的 USB IO卡 跑久會當機
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC 2010 Pro
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
OpenCV
問題(Question):
模擬rs232的USB IO 卡 跑久會當機
餵入的資料(Input):
使IO high 或 low
預期的正確結果(Expected Output):
一直跑一直跑.....
錯誤結果(Wrong Output):
跑到相當時間就會當機 每次時間都不同
程式碼(Code):(請善用置底文網頁, 記得排版)
只附上重點
std::string int2str(int &i){
std::stringstream ss;
ss << i;
return ss.str();
};
// 我用以下這個 function 不斷送 commond 給 COM3(USB IO)
// 每秒15~30次
// 跑到一定時間就會當掉
// release 或 debug 的話,停止偵錯,重來就好
// 如果直接跑.exe,當掉了就只能重開機,工作管理員都關不掉
inline void inputTA7257P(bool p_in1,bool p_in2,HANDLE *p_hComm)
{
std::string strTurn;
const char *SendTurn_Data;
unsigned long lrcTurn, BS_Turn;
int in1=p_in1;
int in2=p_in2;
strTurn="~out6="+int2str(in1)+"~";
SendTurn_Data = strTurn.c_str();
BS_Turn=strlen(SendTurn_Data);
WriteFile(*p_hComm, SendTurn_Data,BS_Turn,&lrcTurn,NULL);
strTurn="~out7="+int2str(in2)+"~";
SendTurn_Data = strTurn.c_str();
BS_Turn=strlen(SendTurn_Data);
WriteFile(*p_hComm, SendTurn_Data,BS_Turn,&lrcTurn,NULL);
};
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.168.17.235
→
07/12 01:39, , 1F
07/12 01:39, 1F
→
07/12 01:39, , 2F
07/12 01:39, 2F
error C2664: 'WriteFile' : 無法將參數 3 從 'const char *' 轉換成 'DWORD'
請問 strTurn.size() 要放哪裡?
※ 編輯: deo2000 來自: 118.168.17.235 (07/12 02:08)
→
07/12 02:35, , 3F
07/12 02:35, 3F
沒錯,真的不知道XD
可是第三個已經放 strTurn.c_str() 了耶 (結果當然是會error)
※ 編輯: deo2000 來自: 118.168.17.235 (07/12 02:45)
→
07/12 02:53, , 4F
07/12 02:53, 4F
推
07/12 09:30, , 5F
07/12 09:30, 5F
可是我只有Send, 沒有Receive耶, 兩次send之間也要delay time嗎?
※ 編輯: deo2000 來自: 118.168.16.13 (07/12 18:31)
→
07/12 20:43, , 6F
07/12 20:43, 6F
我不懂overlapped和non-overlapped的差別耶
貼上port set的程式碼
/****Com Port Set****/
HANDLE hComm;
DCB dcb;
hComm = CreateFile("\\\\.\\COM3",GENERIC_READ |
GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,0);
GetCommState(hComm,&dcb);
dcb.BaudRate = CBR_9600;
dcb.ByteSize = 8;
dcb.Parity = 1;
dcb.StopBits = ONESTOPBIT;
※ 編輯: deo2000 來自: 118.168.16.13 (07/12 23:55)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章