资源简介
本资源给出了Linux下进行RS485通信的实例代码
代码片段和文件信息
// this is a test about 485 full-duplex communication
// hardware : MAX488
#include
#include
#include
#include // open() close()
#include // read() write()
#include // set baud rate
#include
#include
#include
#include
#define DEVICE_TTYS “/dev/ttyS2“
#define MY_BAUD_RATE B9600
#define DATAS_CONTENT “HELLO“
#define RECEIVE_BUF_WAIT_1S 1
#define RECEIVE_BUF_WAIT_2S 2
#define RECEIVE_BUF_WAIT_3S 3
#define RECEIVE_BUF_WAIT_4S 4
#define RECEIVE_BUF_WAIT_5S 5
//------------------------------------- read datas from ttyS ------------------------------------------------
// succese return 1
// error return 0
int read_datas_ttyS(int fd char *rcv_bufint rcv_wait)
{
int retval;
fd_set rfds;
struct timeval tv;
int retpos;
tv.tv_sec = rcv_wait;
tv.tv_usec = 0;
pos = 0; // point to rceeive buf
while (1)
{
FD_ZERO(&rfds);
FD_SET(fd &rfds);
retval = select(fd+1 &rfds NULL NULL &tv);
if (retval == -1)
{
perror(“select()“);
break;
}
else if (retval)
{// pan duan shi fou hai you shu ju
ret = read(fd rcv_buf+pos 2048);
pos += ret;
if (rcv_buf[pos-2] == ‘\r‘ && rcv_buf[pos-1] == ‘\n‘)
{
FD_ZERO(&rfds);
FD_SET(fd &rfds);
retval = select(fd+1 &rfds NULL NULL &tv);
if (!retval) break;// no datas break
}
}
else
{
// printf(“No data\n“);
break;
}
}
return 1;
} // end read_datas_ttyS
//------------------------------------- send and receive datas by RS485 -------------------------------------
int func_485_transfer(int fd)
{
ssize_t ret;
char rcv_buf[1024];
int i;
char *send_buf = DATAS_CONTENT;
bzero(rcv_bufsizeof(rcv_buf));
while(1) {
// send datas
ret = write(fdsend_bufstrlen(send_buf));
if (ret == -1) {
printf (“write device %s error\n“ DEVICE_TTYS);
return -1;
}
// read datas
if (read_datas_ttyS(fdrcv_bufRECEIVE_BUF_WAIT_1S)) {
printf (“%s\n“rcv_buf);
}
else {
printf (“read error\n“);
}
}
return 0;
} // end func_485_receive
//------------------------------------- init seriel port ---------------------------------------------------
void init_ttyS(int fd)
{
struct termios options;
bzero(&options sizeof(options)); // clear options
c
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3925 2005-09-12 02:47 RS485实例代码\full_488_test.c
文件 7534 2005-09-12 02:47 RS485实例代码\full_488_test.o
目录 0 2007-09-01 21:26 RS485实例代码
----------- --------- ---------- ----- ----
11459 3
- 上一篇:Linux系统下dhcp源码
- 下一篇:模糊自整定PID控制算法
相关资源
- 消防指示灯智能监控系统三端口网关
- 为RS-232/485的高频瞬态干扰提供的解决
- VC++ RS232 RS485串口通信源代码_
- RS485串口调试工具
- stm32实现modbus主机从机功能通信
- FreeModbus_For_STM32_USART1_RS485移植分享
- ATMEL AT91SAM7S64的RS485通讯程序源码
- stm32f103 通过485方式读取数据
- 汉枫_HF-LPB嵌入式WiFi模块_UART转WiFi_S
- 一款自动流向控制、宽接口电压的R
- STM32 RS485通信应用
- 基于RS-485的分布式多总线通信系统设
- RS422驱动.rar
- Modbus协议的工业自动化网络规范
- 基于STM32F103的RS485通信主动发送中断接
- 基于STM32F103的RS485通信采用DMA方式发送
- RS485串口调试案例带CRC校检
- STM32四通道4-20ma
- STM32F103单片机基于RS485总线的MODBUS通讯
- 基于STM32RS485总线的数据采集系统设计
- stm32f103 CAN-RS232/RS485
- stm32 rs485 modbus协议
- stm32 RS485测试程序
- STM32F103C8T6 CAN总线 RS485 RS232 源代码
- RS485通信模块设计以及智能家居系统
- RS485 Verilog通信程序及开发资料
- m-bus水表通信协议文档
- 串口调试软件 适用于rs485 rs232等串口
- 自由口通讯
- RS485采集模块与组态王V6.55通讯.rar
评论
共有 条评论