我的机器10个串口为啥在linux下只读两个
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我的机器10个串口为啥在linux下只读两个相关的知识,希望对你有一定的参考价值。
正常XP下是没问题的 10个串口都可用 一在linux下只读两个 这是怎么回事?
我再补充下 这个电脑 是专业计算机 也就是工控机 10个串口是本身自带的 在XP下是正常可读的 但是在linux下只读两个。
而你说有10个,那可能是加装了插卡,现在的PCI转串口的卡有2串口和4串口之分,可能你加装了两块4串口的
当然还有一种程序就叫作虚拟串口,这种程序可以将USB的信号转为9针的串口信号或是将TCP协议转为232串口协议等
================================
工控机也不可能带有10个串口,而PC机的硬件里面自身就包含有2个串口,不管是不是能看的见这2个串口,所以在安装主板驱动时,这2个串口的驱动也被安装了
而其它的真实串口只能是加装的其它硬件,也就是说它不包含在你的电脑主板内。那么,它的驱动也就需要另外安装,大部分硬件都提供WINDOWS下的驱动安装,当前流行的就是XP系统
而你要在LINUX下使用这个硬件,就必须安装它的驱动
从你LINUX下看看硬件安装这儿吧,一定会有没安装的硬件
因为在你XP系统下或是安装了硬件的驱动也或是安装了虚拟串口的程序,而在LINUX下是不好找这种第三方驱动或是XP下的程序
不过LINUX自身好像就支持一个虚拟串口的程序,但我对LINUX了解不多,你可以自己找找看追问
linux 企业版 在正常下默认串口是两个 还有 工控机10个串口怎么就不能呢? 为什么? 我这个就是啊 没有加任何卡。 全部裸板引出的
追答工控机有一个工控板,上面可接CPU卡,这卡上带有显卡(集成)也带有两个串口,这就是工控机的样式
你说的10个串口难道是这CPU卡上带着的?
另:LINUX什么版本不重要,重要的是他们并没有提供大多数硬件的驱动,不过因为你的LINUX是企业版,那你可以凭序列号向官方索要服务,由他们帮助你来编写你这些硬件的驱动
算了 我不和你计较了 你对工控机不了解 你说的那个CPU卡十年前就有 现在科技发展多块 I7的去年就出来了
追答。。。。。。
我需要一个中断处理程序,用于在Linux中使用c ++的两个串口
你好
我的程序中有两个串口。我有串口初始化和功能的课程。当我发送我的串口功能打开它。但是当我在此函数中发送另一个串口信息并设置中断处理程序时,第一个串口不能通过中断处理程序接收。
serial_port_init::serial_port_init(char *sp_name,speed_t baud,void (*event_func)(int32_t)){
struct termios termAttr;
struct sigaction saio;
sp = open(sp_name, O_RDWR | O_NOCTTY | O_NDELAY);
saio.sa_handler = (event_func);
saio.sa_flags = 0;
saio.sa_restorer = NULL;
sigaction(SIGIO,&saio,0);
fcntl(sp, F_SETFL, FNDELAY);
fcntl(sp, F_SETOWN, getpid());
fcntl(sp, F_SETFL, O_ASYNC );
tcgetattr(sp,&termAttr);
cfsetispeed(&termAttr,baud);
cfsetospeed(&termAttr,baud);
termAttr.c_cflag &= ~PARENB;
termAttr.c_cflag &= ~CSTOPB;
termAttr.c_cflag &= ~CSIZE;
termAttr.c_cflag |= CS8;
termAttr.c_cflag |= (CLOCAL | CREAD);
termAttr.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
termAttr.c_iflag &= ~(IXON | IXOFF | IXANY);
termAttr.c_oflag &= ~OPOST;
tcsetattr(sp,TCSANOW,&termAttr);
tcgetattr(sp, &termAttr);
我叫串口初始化
serial_port_init link_sp(link_usart_addr,link_usart_baud,&link_get_all_data_event);
现在我需要两个中断。谢谢
答案
像这样的东西:
static void handler(int sig)
{
printf ("Hello world from handler\n");
}
serial_port_init link_sp(link_usart_addr,link_usart_baud,&handler);
以上是关于我的机器10个串口为啥在linux下只读两个的主要内容,如果未能解决你的问题,请参考以下文章