“现在主要是不知道怎么去配置串口,比如:波特率、奇偶校验、停止位、几位数据位等等。”
------ 所以说,提问时对问题描述要清晰简洁。你说了一大堆话,看完你的问题后,乱七八糟不知道要回答什么。
你的问题不是“C语言操作PC串口”,而是“在windows平台上,C语言怎么操作PC串口?”,没有“在windows平台上”这个限语,没有人有能力回答你的问题。
比如你以前的一个帖子,看到“#include "dos.h",#include "conio.h"”后,得,dos的我忘了,放弃回答;
比如你这个帖子,又是什么“C#、com控件、Turbo C”的,皆非我所会或所愿意回答的。
回正题,在windows平台,只使用API操作COM,我给个例子给你
打开COM1
HANDLE hCom = CreateFile(TEXT("COM1"), GENERIC_READ|GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if( hCom==INVALID_HANDLE_VALUE ) return false;
设置 波特率、奇偶校验、停止位 等等
DCB CommDCB;
GetCommState( hCom, &CommDCB );
CommDCB.BaudRate = BaudRate;
CommDCB.Parity = EVENPARITY;
CommDCB.StopBits = ONESTOPBIT;
CommDCB.ByteSize = 8;
CommDCB.fBinary = 1;
CommDCB.fParity = 1;
CommDCB.fOutxCtsFlow = 0;
CommDCB.fOutxDsrFlow = 0;
CommDCB.fDtrControl = 0;
CommDCB.fDsrSensitivity = 0;
CommDCB.fTXContinueOnXoff = 0;
CommDCB.fOutX = 0;
CommDCB.fInX = 0;
CommDCB.fErrorChar = 0;
CommDCB.fNull = 0;
CommDCB.fRtsControl = RTS_CONTROL_TOGGLE;
CommDCB.fAbortOnError = 0;
SetCommState( hCom, &CommDCB );
设置缓冲大小
SetupComm( hCom, 100, 100 );
设置超时时间
COMMTIMEOUTS CommTimeouts;
GetCommTimeouts( hCom, &CommTimeouts );
CommTimeouts.ReadIntervalTimeout = MAXDWORD;
CommTimeouts.ReadTotalTimeoutMultiplier = 0;
CommTimeouts.ReadTotalTimeoutConstant = 0;
SetCommTimeouts( hCom, &CommTimeouts );
/////////////// 这期间就是对COM进行读写了 ///////////////
COMSTAT ComStat; ClearCommError(hCom,&Errors,&ComStat); 后 ComStat.cbInQue 保存着一个数值,指明还有多少字节已经获得但没有用ReadFile取走。
读用 ReadFile,写用 WriteFile。
/////////////////////////////////////////////////////////
关闭COM
CloseHandle( hCom );
基本上就这些,详见 MFC