使用vC++編譯器如何訪問串口。可以在Turbo C中使用Bioscom()函數。如何在c程序中進行串口通訊?
0
A
回答
1
This page在Microsoft Developer Network上介紹瞭如何使用Windows中的串行端口,根據您選擇的編譯器,我假定它是您想要定位的環境。
0
只有當您使用MSDOS或Windows的非常舊版本(並且特定於Turbo C)時,bios功能纔可用。對於現代版本的Windows,您需要使用OS API來執行串行I/O。
2
你必須像CreateFile
那樣打開相應的com-device。適應您的需求。
// Handle of the communication connection
void *comHandle;
// Port parameters, set to your own needs
unsigned portIndex;
unsigned baudRate;
unsigned dataBits;
Parity parity;
unsigned stopBits;
bool handShake;
int readIntervalTimeout;
int readTotalTimeoutMultiplier;
int readTotalTimeoutConstant;
int writeTotalTimeoutMultiplier;
int writeTotalTimeoutConstant;
DCB dcb;
COMMTIMEOUTS ct;
// Create COM-device name string
char comDevice[20];
sprintf(comDevice, "\\\\.\\COM%d", portIndex);
// Open serial port
_comHandle = CreateFile(comDevice, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
if (comHandle == INVALID_HANDLE_VALUE)
{
return false;
}
ct.ReadIntervalTimeout = readIntervalTimeout;
ct.ReadTotalTimeoutMultiplier = readTotalTimeoutMultiplier;
ct.ReadTotalTimeoutConstant = readTotalTimeoutConstant;
ct.WriteTotalTimeoutMultiplier = writeTotalTimeoutMultiplier;
ct.WriteTotalTimeoutConstant = writeTotalTimeoutConstant;
if (!GetCommState(_comHandle,&dcb))
{
disconnect();
return false;
}
dcb.BaudRate = baudRate;
dcb.ByteSize = (BYTE)dataBits;
dcb.Parity = (parity == None) ? NOPARITY : ((parity == Even) ? EVENPARITY : ODDPARITY);
dcb.StopBits = (stopBits > 1) ? TWOSTOPBITS : ONESTOPBIT;
dcb.fRtsControl = handShake ? RTS_CONTROL_HANDSHAKE : RTS_CONTROL_ENABLE;
dcb.fOutxCtsFlow = handShake;
dcb.fOutxDsrFlow = handShake;
dcb.fDtrControl = handShake ? DTR_CONTROL_HANDSHAKE : DTR_CONTROL_ENABLE;
dcb.fDsrSensitivity = handShake;
dcb.fOutX = FALSE;
dcb.fInX = FALSE;
dcb.fErrorChar = FALSE;
dcb.fNull = FALSE;
dcb.fAbortOnError = TRUE;
// Set port state
if(!SetCommState(_omHandle, &dcb) ||
!SetCommTimeouts(comHandle, &ct) ||
!SetupComm(comHandle, 64, 64) ||
!PurgeComm(comHandle, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR))
{
disconnect();
return false;
}
請閱讀適用於各種調用函數的相應MSDN條目。另外,出於簡潔的原因,我省略了斷開連接方法。
2
他們在代碼項目serial communication with C++許多文章。這是返回的第一個article。你基本上通過文件I/O操作訪問端口。這有點複雜,我建議爲這個任務尋找一個合適的庫。
相關問題
- 1. 使用WCF進行串口通訊?
- 2. 串口通訊問題C#
- 3. 串口通訊工程
- 4. 如何在iPhone應用程序中進行點對點通訊?
- 5. 串行通訊
- 6. 我的網絡應用程序如何與串行端口通訊
- 7. 如何在listview中對手機通訊錄進行排序?
- 8. 串口協議通訊
- 9. 串口通訊顯示
- 10. 串行通訊中的inStream.read
- 11. matlab串行通訊
- 12. DB9串行通訊
- 13. 在C#中,你如何通過串口通過Kermit進行通信?
- 14. 通過串行端口進行通信的Web應用程序
- 15. 如何在C#中進行進程間通信時進行進程間通信?
- 16. 如何與tor網絡進行通訊
- 17. 通過RS232和USB進行串行通訊
- 18. Qt串行通訊終端
- 19. Arduino串行通訊問題
- 20. 如何對iPhone通訊錄進行排序?
- 21. 子流程通訊。 C++
- 22. C:進程如何在linux中進行通信
- 23. Debian Auto Timeout中的串行通訊
- 24. C#串行端口通信
- 25. C++如何在應用程序的DLL之間進行通信?
- 26. RS232串口通訊c#win7 .net framework 3.5 sp1
- 27. 使用C中的多線程進行串口編程
- 28. 如何在西門子S7-1200和python之間進行通訊?
- 29. 如何通過USB進行通訊(手機到PC)?
- 30. c通訊#
要訪問Windows XP中的串行端口,什麼是OS API? – Shashikiran 2009-05-05 09:28:12