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

📄 main.c

📁 嵌入式LINUX下串口编程,适用于PC104板卡的驱动
💻 C
字号:
#include <stdio.h>#include <stdlib.h>#include <termios.h>#include <fcntl.h>#include <asm/io.h>#define DATA_LENGTH	9#define ISR 2#define LSR 5#define IER 1#define FCR 2#define BASEADDR 0x200int main(int argc,char *argv[]){	int fd,res;	int i,portnum;	unsigned char txbuf[255],rxbuf[2000];        unsigned char DataISR,DataLSR,DataIER,tmp;	if(argc < 2) {		perror("You don't input parameters!\n");		return(-1);	}	if((fd = open(argv[1],O_RDWR|O_NONBLOCK)) <= 0) {		perror("Open operation error!\n");		return fd;	}        portnum=atoi(argv[2]);        if (ioperm(BASEADDR+portnum*8,8,1)==-1)           printf("the %d ioperm port failed \n",i);	txbuf[0] = 0x01;	txbuf[1] = 0x83;	txbuf[2] = 0x04;	txbuf[3] = 0xff;	txbuf[4] = 0xff;	txbuf[5] = 0x3f;	txbuf[6] = 0x00;	txbuf[7] = 0xef;	txbuf[8] = 0x27;	while(1) {                 for(i=0;i<255;i++) {                         rxbuf[i] = 0;                 }                 		if(res = write(fd,txbuf,9) != 9) {			perror("Write failed.\n");			continue;		}		printf("TX: ");		for(i=0;i<DATA_LENGTH;i++) {			printf("%02x ",txbuf[i]);		}		printf("\n");                usleep(200000);                DataISR=inb(BASEADDR+portnum*8+ISR);                DataIER=inb(BASEADDR+portnum*8+IER);                DataLSR=inb(BASEADDR+portnum*8+LSR);                printf("ISR=%02x IER=%02x LSR=%02x\n",DataISR,DataIER,DataLSR);//inb(BASEADDR+portnum*8+ISR),                      // inb(BASEADDR+portnum*8+IER),inb(BASEADDR+portnum*8+LSR));                                     if ((DataISR&0x0c)==0x0c) {getchar();outb(0x0c,BASEADDR+portnum*8+FCR);}				printf("RX: ");		if(res = read(fd,rxbuf,3) <= 0) {			perror("Receive 1nd failed.\n");			continue;		}		if(res = read(fd,&rxbuf[3],rxbuf[2]+2) <= 0) {			perror("Receive 2nd failed.\n");			continue;		}		for(i=0;i<rxbuf[2]+5;i++) {			printf("%02x ",rxbuf[i]);		}		printf("\n");	}	close(fd);        if (ioperm(BASEADDR+portnum*8,8,0))	return EXIT_SUCCESS;}

⌨️ 快捷键说明

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