⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test-serial.c

📁 周立功PXA270实验箱的RS485驱动源代码
💻 C
字号:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>

#include "serial.h"
#include "rs485.h"


#define RS485_PIO_DEV "/dev/rs485/0"

static int n_com_port = 2;

int main (int argc, char *argv[])
{
	int ret = -1;
	int len_tty = -1;
	int fd_rs485;
	unsigned char buf_tty[256];


	if (argc > 1) {
		n_com_port = strtol( argv[1], NULL, 10 );
	}

	fd_rs485 = open(RS485_PIO_DEV, O_RDWR);
	if (fd_rs485 < 0) {
		fprintf(stderr, "Error: open RS485 device, check if driver installed\n");
		exit(EXIT_FAILURE);
	}


	ret = OpenComPort(n_com_port, 9600, 8, "1", 'N');
	if (ret < 0) {
		fprintf(stderr, "Error: Opening Com Port %d\n", n_com_port);
		return ret;
	}else{
		printf("Open Com Port %d Success, Now going to read port\n", n_com_port);
	}

	while(1){
		ioctl(fd_rs485, RS485_SET_MODE, RS485_MODE_RECV);
		bzero(buf_tty, sizeof(buf_tty));
		len_tty = ReadComPort(buf_tty, 255);

		if (len_tty < 0) {
			printf("Error: Read Com Port\n");
			break;
		}

		if (len_tty == 0) {
			write(STDOUT_FILENO, ".", sizeof("."));
			continue;
		}

		printf("Recv: %d bytes, [%s]\n", len_tty, buf_tty);

		ioctl(fd_rs485, RS485_SET_MODE, RS485_MODE_SEND);

		
		len_tty = WriteComPort(buf_tty, len_tty);
		WriteComPort(" recved:", sizeof(" recved:"));
		if (len_tty < 0) {
			printf("Error: WriteComPort Error\n");
		}
		// delay 500 ms to let data transfer complete
		// here will cause bugs 
		usleep(500 * 1000);
		ioctl(fd_rs485, RS485_SET_MODE, RS485_MODE_RECV);
	}

	CloseComPort();

	printf("Program Terminated\n");

	return(0);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -