龙空技术网

三行代码极简方式DIY一个USB转串口

FlexLua 44

前言:

如今大家对“usb接口编程”大约比较着重,朋友们都需要分析一些“usb接口编程”的相关知识。那么小编同时在网上网罗了一些关于“usb接口编程””的相关内容,希望咱们能喜欢,看官们一起来了解一下吧!

C1/C2 自带 USB 虚拟串口

本教程来至 FlexLua 官网 ShineBlink 开发板教程,即使不懂单片机开发也可很容易用FlexLua零门槛开发各种 IoT 硬件。

一、实现功能

本篇章所实现的功能是将Core(ShineBlink Mini 开发板)的USB口通过 Lua 代码配置成虚拟串口,这样和电脑通过USB线连接好后,电脑就会发现一个新的串口设备,我们通过在电脑上运行的串口调试终端(sscom,putty,minicom,etc..)打开这个串口后,每隔300毫秒向Core发送一包10个字节的数据,Core收到这10个字节后将这个10个字节的数据每个都加1后再返回给电脑。

二、完整代码

注意: 在 C1 开发板中,如果您的项目中同时用到Ble蓝牙功能时,一定要先初始化Ble蓝牙之后,再调用LIB_UsbConfig函数初始化USB功能。

--配置Core的USB接口以USB转串口模式工作,注意:配置成CDC_PD后print函数并不会打印输出到电脑上
LIB_UsbConfig("CDC_PD")
--开始大循环
while(GC(1) == true)
do
--如果Core和电脑通过USB线连好了,且电脑端打开了该串口
if LIB_UsbCommPortOpenQuery() == 1 then
--查询是否收到电脑发来的串口数据
recv_flag,recv_tab = LIB_UsbCdcRecv()
if recv_flag == 1 then
--将收到的数据每个都加1,再返送给电脑
for i = 1, #recv_tab do
recv_tab[i] = recv_tab[i] + 1
end
LIB_UsbCdcSend(recv_tab)
end
end
end


如果感兴趣,上面代码中出现的LIB开头的库函数可以在 API文档 中通过Ctrl+F查询。

三、演示

如果您的电脑是win10系统,当和Core通过USB线连接好了会自动装好驱动,如果是Win7系统请用baidu或google搜索 “nRF52 USB CDC ACM驱动” 关键词来完成驱动安装的工作。

接下来在串口调试终端软件上按照 N, 8, 1, 115200 设置,并找到正确的com口打开,这里我设置每300毫秒发送

0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09十个数据。

下图是实际运行效果:

标签: #usb接口编程 #usb串口编程 #c语言如何读取电脑usb串口