Re: 請問_inp與_outp如何使用

看板Programming作者時間18年前 (2006/07/05 02:01), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《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
文章代碼(AID): #14ggpY00 (Programming)
文章代碼(AID): #14ggpY00 (Programming)