Re: 請問_inp與_outp如何使用
※ 引述《Lonepair.bbs@bbs.ccns.ncku.edu.tw (我要認真唸書)》之銘言:
> 各位大大:
> 小弟我現在的程式目的是希望可以寫一個C程式的介面,在這個介面中我可以讓使用者
> 輸入一個數字,然後程式接收到這個數字後,可以透過RS-232傳出電腦給我已經插好
> 的一塊8051版子做處理,然後再把處理好的結果透過RS-232傳回電腦來給介面程式
> 然後要秀在螢幕上,可是小弟我現在的瓶頸是我查MSDN找到了_inp與_outp這兩個
> 函式庫可以用於傳送和接收的動作,而我想問的是如果我現在的port如果是COM1 =0x3f8
> 這個port,那我只要把0x3f8這個port number當作是parameter傳給_inp與_outp
> 這兩個function就可以了嘛,這樣RS-232就會透過我的程式幫我把data送出去了嘛
> 還是我的程式還缺少什麼,需要再做什麼樣的設定,請各位大大教我。
> 謝謝
如果是在 Win32 OS 下, OS 已經提供了 Win32 Communications API.
這邊我示範一個例子, 透過 COM1 輸出一個字串 "Hi There\r\n", 然後讀入一個 byte.
(用 115200 bps baud rate)
{
DCB dcb;
HANDLE handle;
COMMTIMEOUTS cto;
DWORD dwNoByte;
char szPort[] = "\\\\.\\COM1";
char buf[1];
handle = CreateFile (szPort, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if (handle == INVALID_HANDLE_VALUE) {
ulErr = GetLastError ();
return;
}
memset (&dcb, 0, sizeof (dcb));
BuildCommDCB ("115200,n,8,1", &dcb);
dcb.fOutxCtsFlow = TRUE;
dcb.fRtsControl = RTS_CONTROL_ENABLE;
dcb.fDtrControl = DTR_CONTROL_DISABLE;
dcb.EofChar = 0x1a;
dcb.XonChar = 0x11;
dcb.XoffChar = 0x13;
SetCommState (handle, &dcb);
cto.WriteTotalTimeoutMultiplier = 0;
cto.WriteTotalTimeoutConstant = 0;
cto.ReadIntervalTimeout = MAXDWORD;
cto.ReadTotalTimeoutMultiplier = MAXDWORD;
cto.ReadTotalTimeoutConstant = 100; // 100 ms timeout
SetCommTimeouts (handle, &cto);
WriteFile (handle, "Hi There\r\n", 10, &dwNoByte, 0);
ReadFile (handle, buf, 1, &dwNoByte, 0);
}
slash
--
※ Origin: SayYA 資訊站 <bbs.sayya.org>
◆ From: 202-178-172-235.cm.dynamic.apol.com.tw
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
Programming 近期熱門文章
PTT數位生活區 即時熱門文章