LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1041|回复: 3

windows下的串口编程转换成linux下的串口编程

[复制链接]
发表于 2009-9-1 21:09:10 | 显示全部楼层 |阅读模式
最近小弟要将一个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下面的
发表于 2009-9-1 21:20:59 | 显示全部楼层
http://www.ibm.com/developerworks/cn/linux/l-serials/index.html  里面的内容和例程应该满足你上面程序的要求了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-9-1 21:40:52 | 显示全部楼层
谢谢,但是我找了一下关于传输linux中,串口传输超时的设置,没有找到相关的资料
回复 支持 反对

使用道具 举报

发表于 2009-9-2 17:42:41 | 显示全部楼层
options.c_cc[VTIME] = 150; /* 设置超时15 seconds*/   
options.c_cc[VMIN] = 0; /* Update the options and do it NOW */
if (tcsetattr(fd,TCSANOW,&options) != 0)   
{
        perror("SetupSerial 3");   
        return (FALSE);  
}
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表