RS 232 WriteFile |
尚未結案
|
PHILL1031
一般會員 發表:1 回覆:0 積分:0 註冊:2009-09-21 發送簡訊給我 |
以下 是小弟 做的跟RS232 溝通的程式碼 第一部分是 連線COM1 的部份 第二部份是SEND 字的部份
那想請問的是 目前 COM1連結的部份 OK 那不知道為什麼資料一直寫不進去 會回傳WriteFile Fail ! 想請教一下各位前輩 謝謝 第一次發文 有什麼不正確的地方請指正 謝謝 [code cpp] void Crs232test5Dlg::OnBnClickedButtonConnect() { // Open Com1 port HANDLE hCom; DCB dcb; COMMTIMEOUTS cto; BOOL fSuccess; int ClickEdit01St=0; int ClickEdit01=0; hCom = CreateFile( TEXT("COM1:"), GENERIC_READ|GENERIC_WRITE , 0, NULL, OPEN_EXISTING, NULL, NULL); if(hCom == INVALID_HANDLE_VALUE) { AfxMessageBox(_T("Com1 not Open!"),MB_OK); } else { AfxMessageBox(_T("Com1 Open!"),MB_OK); dcb.DCBlength = sizeof(DCB); fSuccess = GetCommState (hCom, &dcb); if(!fSuccess) { AfxMessageBox(_T("GetCommState Fail !"),MB_OK); dcb.BaudRate = CBR_19200; // set the baud rate dcb.ByteSize = 8; // data size, xmit, and rcv dcb.Parity = NOPARITY; // no parity bit dcb.StopBits = ONESTOPBIT; // one stop bit fSuccess = SetCommState(hCom,&dcb); } if(!fSuccess) { AfxMessageBox(_T("SetCommState Fail !"),MB_OK); cto.ReadIntervalTimeout = 0; cto.ReadTotalTimeoutMultiplier = 0; cto.ReadTotalTimeoutConstant = 500; cto.WriteTotalTimeoutMultiplier = 0; cto.WriteTotalTimeoutConstant = 500; fSuccess = SetCommTimeouts(hCom,&cto); } if(!fSuccess) { AfxMessageBox(_T("SetCommTimeouts Fail !"),MB_OK); } } void Crs232test5Dlg::OnBnClickedButtonSend() { char* szWriteText="H"; int fSuccess; HANDLE hCom; DWORD cWriteBytes ; fSuccess = WriteFile (hCom, &szWriteText,2, &cWriteBytes, 0); if(!fSuccess) AfxMessageBox(_T("WriteFile Fail !"),MB_OK); CloseHandle(hCom); } [/code] |
ic.yang
一般會員 發表:0 回覆:1 積分:0 註冊:2009-12-16 發送簡訊給我 |
|
aftcast
站務副站長 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
若open有成功,writefile不進去,一般是…
你接在232上的裝置沒有ready,或者是timeout(意味著你很快的寫入,但裝置並沒有很快的回覆你,所以timout) 請把程式碼改成如下: [code cpp] if(!fSuccess) { int ret=GetLastError(); //在這裡中斷,查一下ret的值,然後查msdn線上說明 //AfxMessageBox(_T("WriteFile Fail !"),MB_OK); CloseHandle(hCom); } [/code]
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |