|
最近小弟要将一个WINDOWS下的串口程序改成linux下的。
因为小弟刚入门,希望高手帮一下忙,不胜感激
windows下的源程序如下
#include "windows.h"
#include "windef.h"
#include "winnt.h"
#include "winbase.h"
#include "stdio.h"
#include "time.h"
#include <string.h>
char FileName[256];
char DestPath[256];
char DestFile[256];
char ListFile[256];
HANDLE hCom; //串口句柄全局变量
DCB dcb; //串口变量结构
BOOL InitComm()
{
COMMTIMEOUTS TimeOuts;
hCom=CreateFile("COM4",GENERIC_READ|GENERIC_WRITE,0,NULL,
OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,NULL);
if(hCom==INVALID_HANDLE_VALUE)
return FALSE;
SetupComm(hCom,4096,4096); //设定串口发送、接收缓冲期大小
TimeOuts.ReadIntervalTimeout=1000; //设定读超时
TimeOuts.ReadTotalTimeoutMultiplier=500;
TimeOuts.ReadTotalTimeoutConstant=5000;
TimeOuts.WriteTotalTimeoutMultiplier=500; //设定写超时
TimeOuts.WriteTotalTimeoutConstant=2000;
SetCommTimeouts(hCom,&TimeOuts); //设置超时
GetCommState(hCom,&dcb);
dcb.BaudRate=CBR_300; //波特率为
dcb.ByteSize=8; //每个字节有位
dcb.Parity=NOPARITY; //无奇偶校验位
dcb.StopBits=ONESTOPBIT; //一个停止位
dcb.fDtrControl=DTR_CONTROL_DISABLE;
dcb.fOutxCtsFlow=TRUE;
dcb.fRtsControl=RTS_CONTROL_HANDSHAKE;
//dcb.fOutxCtsFlow=FALSE;
//dcb.fRtsControl=RTS_CONTROL_DISABLE;
SetCommState(hCom,&dcb);
PurgeComm(hCom,PURGE_TXCLEAR|PURGE_RXCLEAR);
return TRUE;
}
以上是程序的片段,是串口的初始化,希望高手能指点一下。改成linux下面的 |
|