linux USB虚拟串口设备名的修改
linux-dash
A beautiful web dashboard for Linux
项目地址:https://gitcode.com/gh_mirrors/li/linux-dash
免费下载资源
·
在LINUX 中,会经常用到USB转串口的设备。而LINUX中通用的做法是根据插入USB设备的先后顺序依次注册ttyUSB0\1\2\3..等设备,但是这样就有一个问题了,例如我有多个USB的口,要接多种不同USB转串口设备,那么我插上USB的顺序不同,那同一个设备注册的设备名就不同了,这样就造成在APP中调用的USB的设备名变化的,这样就增加了APP开发的难度。那么可不可把不同的设备注册的串口号固定下来呢?
在linux的USB转串口的驱动中,定义了一个serial_table的指针数组,这个数组保存每一个注册的USB串口设备。当USB插上时,usb_serial_probe会被执行,这个函数会调用get_free_serial。在get_free_serial中,会遍历整个数组,寻找第一个没有被赋值的单元,将设备的usb_serial结构的地址保存的这个单元,同时将该数组元素的下标赋值给usb_serial结构中port[N]的number(一个USB设备可以有多个PORT),而这个number就是最后注册的设备名ttyUSB0\1\2\3..后面的数字。
那么是不是我们可以给每一个设备指定一个开始的number号,那么不论先后顺序设备名都可以固定了。
下面还有一个问题,就是怎么在get_free_serial中判断是什么设备呢?这个LINUX已经给我们准备好了,就是description,我们只要比较description和我们要指定的设备是否相同就好了。这个保存在usb_serial结构的type->description下,这个description我们是定义在设备驱动的usb_serial_driver结构的description。如果没有定义description,那么将用usb_serial_driver结构中的driver->name作为description。
有了上面的知识,我们的工作就很简单了只要在get_free_serial的开头加上下面的代码,就大功告成了。
if(memcmp(serial->type->description,"dev name ",6) ==0)
{
i=_DEF_NUMBER;
}
else
{
i=0;
}
在linux的USB转串口的驱动中,定义了一个serial_table的指针数组,这个数组保存每一个注册的USB串口设备。当USB插上时,usb_serial_probe会被执行,这个函数会调用get_free_serial。在get_free_serial中,会遍历整个数组,寻找第一个没有被赋值的单元,将设备的usb_serial结构的地址保存的这个单元,同时将该数组元素的下标赋值给usb_serial结构中port[N]的number(一个USB设备可以有多个PORT),而这个number就是最后注册的设备名ttyUSB0\1\2\3..后面的数字。
那么是不是我们可以给每一个设备指定一个开始的number号,那么不论先后顺序设备名都可以固定了。
下面还有一个问题,就是怎么在get_free_serial中判断是什么设备呢?这个LINUX已经给我们准备好了,就是description,我们只要比较description和我们要指定的设备是否相同就好了。这个保存在usb_serial结构的type->description下,这个description我们是定义在设备驱动的usb_serial_driver结构的description。如果没有定义description,那么将用usb_serial_driver结构中的driver->name作为description。
有了上面的知识,我们的工作就很简单了只要在get_free_serial的开头加上下面的代码,就大功告成了。
if(memcmp(serial->type->description,"dev name ",6) ==0)
{
i=_DEF_NUMBER;
}
else
{
i=0;
}
GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e
added ecosystem file for PM2 4 年前
5def40a3
Add host customization support for the NodeJS version 4 年前
更多推荐
已为社区贡献6条内容
所有评论(0)