牛卧堂MCU技术交流

标题: 史上最精简的Nano_USB虚拟串口源代码 [打印本页]

作者: admin    时间: 2013-12-23 15:16
标题: 史上最精简的Nano_USB虚拟串口源代码
版权:Angus

你见过这么精简的USB虚拟UART串口代码吗?  反正我是第一次, 代码大小只有 1.28K   Nano_USB_VCOM.zip (71.67 KB, 下载次数: 3891)
新唐最精简的 最容易学的 USB虚拟串口源代码

    编译烧录到Nano120/130 板子上后, 连上USB线, PC机识别出未知设备,手动安装,或更新驱动程序. PC端驱动程序在软件包的Windows目录里. 安装好后会显示COM口号,或者从PC机硬件管理那里看到PC机分配的COM号.
    然后打开超级终端,或用串口工具,打开对应串口,就可以看到有数据发过来, 从串口工具发送abcdefgh, 会变成大写返回.


作者: william    时间: 2013-12-24 15:40
能用于m058s吗!
作者: admin    时间: 2013-12-24 15:42
william 发表于 2013-12-24 15:40
能用于m058s吗!

M058S 没有内置 USB模块
作者: 与时俱进    时间: 2014-2-18 20:59
硬件上到底怎么连接呢?除了与电脑Usb口连接外,Nano芯片的Uart0口有连接吗?
"打开对应串口,就可以看到有数据发过来"是nano芯片作为数据发送方吗?
返回大写字符是实现了本地回显吗?
我按照一楼方法做了一遍,一打开仿真终端程序就报打开串口错误。
作者: 与时俱进    时间: 2014-2-19 12:46
确实很精简。
有没有谁用过呢?
打开仿真终端程序就报错,如图。

USB_COM.JPG (8.22 KB, 下载次数: 581)

USB_COM.JPG

作者: 与时俱进    时间: 2014-2-21 15:01
这个是什么原因呢?
作者: hyzhau    时间: 2014-3-11 10:49
正准备搞这个东西的
作者: Angus    时间: 2014-3-11 17:46
本帖最后由 Angus 于 2014-3-11 17:48 编辑
与时俱进 发表于 2014-2-19 12:46
确实很精简。
有没有谁用过呢?
打开仿真终端程序就报错,如图。


把代码烧录到 Nan0芯片上后, Nano芯片的那个USB口连上PC机(注意不再是防真器的那个USB口),PC机会弹出无法识别的设备, 这时在设备管理器里,更新驱动,驱动程序也在这个软件包里。
  驱动更新后, PC机的设备管理器,就会识别出一个USB虚拟串口设备,并分配了一个串口号。这时用串口工具就可以Open 这个虚拟串口,注意不是接 UART0 哦。这时在“串口工具”界面就会接收到数据。因为是USB虚拟的串口,所以波特率随便设置多少都行。
作者: 与时俱进    时间: 2014-3-11 18:37
本帖最后由 与时俱进 于 2014-3-11 18:40 编辑
Angus 发表于 2014-3-11 17:46
把代码烧录到 Nan0芯片上后, Nano芯片的那个USB口连上PC机(注意不再是防真器的那个USB口),PC机会弹出 ...

谢谢!您说的这些都明白,也这么做过,最后在串口工具打开对应的串口时,就报错,5#有截图。
最开始,用BSP里的USB_COM例程做了一个虚拟串口,电脑里安装了驱动,所以用本例程做虚拟串口,电脑就不再安装驱动了;前天我特意把例程代码的VENDOR ID从16改成15,重新编译烧写,插入电脑后,又提示安装驱动,我把驱动inf文档对应改一下,安装驱动成功了,但是还是报错。
我现在不清楚,USB的CDC类用什么命令打开串口?虚拟串口设备接收到后又做了什么?

作者: 与时俱进    时间: 2014-3-12 09:42
本帖最后由 与时俱进 于 2014-3-12 14:44 编辑

会不会与操作系统有关系呢?看截图,楼主似乎用的是win7? 我使用XP。

作者: 与时俱进    时间: 2014-3-12 14:45
今天用NUC123做类似实验,类似的结果。
作者: Angus    时间: 2014-3-12 16:05
从你的图上看, 是串口分配冲突了, 你可以在硬件管理那里,看串口号分配是否正常, 手动给它分配个串口号试试.
作者: 与时俱进    时间: 2014-3-12 21:18
Angus 发表于 2014-3-12 16:05
从你的图上看, 是串口分配冲突了, 你可以在硬件管理那里,看串口号分配是否正常, 手动给它分配个串口号试试. ...

您指的是还有其它设备也同样分配了COM11口吗?
感觉不太可能,没插入PC时,硬件管理器里只有一个串口COM1,插入后多出了COM11,这个COM11肯定就是本例的,不会是其它的了。当然,我明天会按您说的试试看,到时汇报结果。
作者: 与时俱进    时间: 2014-3-13 10:07
报告实验结果:不管我把串口号改成多少,结果都一样,不成功。BSP里的虚拟串口例程都能正常运转。
作者: Angus    时间: 2014-3-13 11:20
与时俱进 发表于 2014-3-13 10:07
报告实验结果:不管我把串口号改成多少,结果都一样,不成功。BSP里的虚拟串口例程都能正常运转。 ...

我怀疑你的操作系统版本刚好在VCOM方面缺少某个文件,  我们这个VCOM例程也做了一点简化, 下位机和上位机都缺少某个部分, 造成VCOM识别失败.
作者: 与时俱进    时间: 2014-3-13 16:02
本帖最后由 与时俱进 于 2014-3-13 21:14 编辑
Angus 发表于 2014-3-13 11:20
我怀疑你的操作系统版本刚好在VCOM方面缺少某个文件,  我们这个VCOM例程也做了一点简化, 下位机和上位机 ...

我猜测只有你使用的串口助手程序才能出现你的实验效果。我用了4种终端机程序,只有一种虽可以显示出字符,但运行极不正常,其它3种都是打开串口报错。
在win7下也测试过,一样的。
作者: Angus    时间: 2014-3-14 11:41
与时俱进 发表于 2014-3-13 16:02
我猜测只有你使用的串口助手程序才能出现你的实验效果。我用了4种终端机程序,只有一种虽可以显示出字符, ...

你是用我们的 Nutiny_Nano130 板子测试的, 还是你自己做的板子?
我用我们的 Nutiny_Nano130 板子测试,在 Win7 上运行一直很正常。
作者: 与时俱进    时间: 2014-3-14 14:19
用你们的板子——新唐研讨会发的板子, Nutiny_Nano130和NUC123都测试过。
能不能把你的仿真终端程序给我试试?
作者: 与时俱进    时间: 2014-3-15 12:00
经过一番研究,终于搞定。
作者: jutyy    时间: 2014-3-22 12:06
我一直没搞定NUC120的USB转串口,系统老提示没有找到相关文件
没有什么INF段
作者: jutyy    时间: 2014-3-22 12:08
WIN7下面就是不行
作者: jutyy    时间: 2014-3-22 12:28
我在XP上没用楼主的程序可以识别到相应的USB,但换到另一台电脑是WIN7的提示图中对话框

QQ图片20140322122353.jpg (35.31 KB, 下载次数: 282)

QQ图片20140322122353.jpg

作者: 与时俱进    时间: 2014-3-22 13:08
jutyy 发表于 2014-3-22 12:06
我一直没搞定NUC120的USB转串口,系统老提示没有找到相关文件
没有什么INF段 ...

要安装驱动啊。
作者: jutyy    时间: 2014-3-24 10:12
指定路径装驱动时,提示的错误!驱动用的是您工程里面的Windows Driver
作者: jutyy    时间: 2014-3-25 17:13
没人答了
作者: admin    时间: 2014-3-25 17:59
jutyy 发表于 2014-3-24 10:12
指定路径装驱动时,提示的错误!驱动用的是您工程里面的Windows Driver

默认路径有没有提示错误?卸载重装呢?   应该是驱动没有装好,
作者: swustlx86    时间: 2014-4-25 13:24
楼主  WIN7下打开串口提示错误   如5楼图所示  请问是什么原因呢?
作者: 我爱下载    时间: 2014-4-25 15:18
下载了,学习一下
作者: 我爱下载    时间: 2014-4-25 15:55
已经测试了楼主的程序,可以正确枚举,但是通过串口软件打开时,却不无法正确打开,有什么机关
作者: 与时俱进    时间: 2014-4-27 11:32
我爱下载 发表于 2014-4-25 15:55
已经测试了楼主的程序,可以正确枚举,但是通过串口软件打开时,却不无法正确打开,有什么机关 ...

程序的问题。精简太多,把SET_LINE_CODE给剪掉了,就出错。
作者: 我爱下载    时间: 2014-4-28 16:39
与时俱进 发表于 2014-4-27 11:32
程序的问题。精简太多,把SET_LINE_CODE给剪掉了,就出错。

谢谢,学习了,不知道有没有修改的代码研究一下,usb始终没有学明白啊
作者: 与时俱进    时间: 2014-4-28 17:24
我爱下载 发表于 2014-4-28 16:39
谢谢,学习了,不知道有没有修改的代码研究一下,usb始终没有学明白啊

只要在SET_LINE_CODE的地方改几行代码。




欢迎光临 牛卧堂MCU技术交流 (http://nuvoton-mcu.com/) Powered by Discuz! X3.2