ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

海康固定扫码枪串口通信全解析:从接线配置到数据解析与避坑指南

2026/9/24 13:07:11 拓冰建站 浏览量
海康固定扫码枪串口通信全解析:从接线配置到数据解析与避坑指南 1. 为什么工业现场还在大量使用串口扫码枪1.1 串口通信在扫码场景中的真实地位很多人一提到扫码枪第一反应就是USB口插上电脑就能用跟键盘一样直接出字符。这个认知在办公场景没问题但一旦到了工厂产线、仓储分拣、物流DWS这些环境USB方案基本会被直接否掉。原因很朴素USB通信距离短一般超过5米就开始不稳定而产线设备到控制柜的距离动辄十几米USB依赖主机操作系统枚举设备工控机重启或者系统更新后经常出现设备识别异常更关键的是USB HID模式本质是模拟键盘输入数据直接进焦点窗口一旦操作员误触其他界面扫码数据就丢了这在需要100%数据追溯的产线是不可接受的。串口COM方案恰好补上了这些短板。RS-232标准下通信距离可以做到15米左右RS-485还能扩展到上千米串口是操作系统底层的字符设备不依赖复杂的驱动栈稳定性极高数据以字节流形式到达由上位机程序主动读取解析不存在“焦点窗口”问题。海康的固定式扫码枪比如ID3000、ID5000、ID6000系列工业现场大量采用的就是串口输出模式。我接触过的汽车零部件产线、锂电PACK线、医药包装线几乎清一色用海康固定扫码枪走串口或者网口。串口方案虽然配置起来比USB麻烦一点但一旦调通几年都不用动它这才是工业现场真正看重的。1.2 这篇文章能帮你解决哪些具体问题如果你手上正好有一台海康固定扫码枪需要接到工控机、PLC或者触摸屏上通过COM口拿数据那这篇内容基本能覆盖你从开箱到出数据的全流程。具体来说我会把下面这些事情讲透硬件层面怎么接线DB9的针脚定义到底是什么RS-232和RS-485在接线上的区别在哪里海康扫码枪的串口参数怎么配波特率、数据位、停止位、校验位这些到底怎么选工控机上COM口不显示、驱动装不上、端口号冲突这些高频问题怎么排查上位机收到的一串十六进制字节流怎么解析成可读的条码内容实际产线中遇到的粘包、丢包、乱码问题怎么定位和解决适合的读者包括自动化产线的电气工程师、做视觉和读码项目的集成商、工控上位机软件开发人员以及刚接触工业扫码设备的技术支持。不需要你事先懂串口协议但最好有一点基本的电子和编程概念这样理解起来会更快。2. 硬件连接从针脚定义到线缆选型2.1 DB9接口的针脚定义与常见误区海康固定扫码枪的串口输出物理接口通常是DB9母头孔式或者端子排。DB9的9个针脚在RS-232标准下的定义是这样的针脚名称方向作用1DCD输入载波检测2RXD输入接收数据3TXD输出发送数据4DTR输出数据终端就绪5GND-信号地6DSR输入数据设备就绪7RTS输出请求发送8CTS输入清除发送9RI输入振铃指示实际接线时最核心的三根线是2RXD、3TXD、5GND。扫码枪的TXD要接到上位机的RXD扫码枪的RXD接到上位机的TXDGND对GND。这就是所谓的“交叉接线”。很多人第一次接线时直接2对2、3对3结果死活收不到数据问题就出在这里。注意海康部分型号的扫码枪默认只使用TXD发送数据RXD可以不接。如果你只需要扫码枪往工控机发数据不往扫码枪发配置指令那接2和5两根线就能工作。但建议还是把3也接上方便后续用串口助手发指令调试。2.2 RS-232与RS-485的选型判断海康固定扫码枪通常支持RS-232和RS-485两种串口电平标准具体支持哪种取决于型号。选哪个主要看三个因素通信距离。RS-232的理论极限是15米实际在电磁环境复杂的车间里超过10米就建议加隔离或者转成RS-485。RS-485在9600波特率下可以跑1200米完全覆盖绝大多数产线场景。组网需求。RS-232是一对一通信一个COM口只能接一台扫码枪。RS-485是总线式一条总线上可以挂多台扫码枪通过不同的设备地址区分。如果你一个工位要接4台扫码枪分别扫不同位置的条码RS-485是唯一选择。上位机接口。工控机自带的COM口通常是RS-232电平。如果要接RS-485的扫码枪需要加一个RS-232转RS-485的转换器或者用PCIe串口卡。转换器选型时注意看是否支持自动收发切换手动切换的型号在高速通信时容易丢数据。我个人的经验是单台扫码枪、距离10米以内直接用RS-232最省事多台扫码枪或者距离超过15米果断上RS-485别犹豫。2.3 USB转串口线的芯片选择现在很多工控机已经没有原生COM口了只能用USB转串口线。这个环节坑最多核心在于芯片方案。市面上常见的芯片有CH340、CP2102、FT232、PL2303这几种。CH340是国内用得最多的方案便宜但驱动兼容性一般Windows 10以上版本有时候需要手动装驱动而且不同批次的CH340芯片在波特率较高时115200以上容易丢数据。CP2102和FT232稳定性明显更好FT232是工业级方案价格贵但几乎不出问题。PL2303假货泛滥很多便宜的线用的是山寨芯片Windows 11下直接蓝屏。提示工业现场建议直接用FT232芯片的USB转串口线虽然贵几十块钱但省下来的排查时间远超这个成本。如果预算有限CP2102也可以接受。CH340只建议在调试阶段用不要用在正式产线上。3. 海康扫码枪串口参数配置详解3.1 波特率、数据位、停止位、校验位怎么选串口通信的本质是双方约定好一套时序规则按照这个规则逐位传输数据。这套规则就是波特率、数据位、停止位、校验位四个参数。任何一项不匹配收到的就是乱码或者完全收不到。波特率决定每秒传输多少位。海康扫码枪支持的常见波特率有9600、19200、38400、57600、115200。产线上最常用的是9600和115200。9600足够传输条码数据一个条码通常几十个字节而且抗干扰能力更强。115200适合高速产线比如每分钟扫几百次的情况。数据位通常是8位表示每个字符用8个二进制位表示。7位数据位只在传输纯ASCII字符且需要兼容老设备时使用现在基本不用。停止位通常是1位表示一个字符传输结束。1.5位和2位只在特殊场景下使用比如通信质量极差需要额外容错时。校验位用于检测传输错误。None表示不校验Even表示偶校验Odd表示奇校验。海康扫码枪默认通常是None。如果产线电磁干扰严重可以开Even校验但会增加一位传输开销。海康扫码枪的出厂默认串口参数一般是9600, 8, N, 1波特率9600数据位8无校验停止位1。这个配置兼容性最好建议先用默认参数调通再根据实际需求调整。3.2 通过配置码和串口指令修改参数海康扫码枪修改串口参数有两种方式扫配置码和发串口指令。扫配置码最简单。海康的用户手册里有一整套配置码找到“串口参数设置”那一页扫一下“115200波特率”的码扫码枪会“滴”一声确认参数就改好了。这种方式适合现场快速调整不需要连电脑。发串口指令适合批量配置或者集成到上位机程序里。海康扫码枪支持一套基于ASCII的指令集通过串口发送特定格式的指令可以读写参数。比如设置波特率的指令格式通常是这样的# 设置波特率为115200的指令示例具体指令以海康手册为准 # 发送~SET BAUD 115200\r\n # 返回~SET BAUD OK\r\n不同型号的指令格式可能有差异一定要以对应型号的《用户手册》为准。我见过有人拿ID3000的指令去配ID5000结果扫码枪直接不响应最后只能恢复出厂设置重来。注意修改波特率后上位机的串口助手或者程序也要同步改成相同的波特率否则会立刻失去通信。建议改完参数后先断电重启扫码枪确保参数生效。3.3 触发模式与输出格式的配置串口参数只是通信层面的配置扫码枪还有两个关键配置直接影响数据怎么发触发模式和输出格式。触发模式决定扫码枪什么时候开始扫码。常见的有手动触发按一下按钮扫一次自动感应检测到物体靠近就自动扫连续扫描一直不停地扫指令触发上位机通过串口发指令触发产线上最常用的是自动感应或者指令触发。自动感应适合流水线物体经过时自动扫。指令触发适合需要精确控制的场景比如PLC控制扫码枪在特定时刻扫描。输出格式决定扫码枪发出来的数据长什么样。可以配置前缀、后缀、分隔符还可以配置是否发送条码类型标识。比如你希望收到的数据是“CODE128:1234567890”就需要在输出格式里加上条码类型前缀。海康扫码枪的输出格式配置通常也是通过配置码或者串口指令完成。配置时要注意前缀后缀不要和条码内容冲突否则解析时会出问题。我见过有人把后缀设成“\r\n”结果条码内容里正好有回车换行解析程序直接懵了。4. 上位机端配置与数据接收4.1 Windows下COM口的识别与驱动安装扫码枪接上工控机后第一件事是确认COM口有没有被正确识别。打开“设备管理器”展开“端口COM和LPT”这一项应该能看到类似“USB-SERIAL CH340 (COM3)”或者“Silicon Labs CP210x (COM5)”的设备。如果看不到或者设备前面有个黄色感叹号说明驱动没装好。这时候需要根据USB转串口线的芯片型号去装对应驱动。CH340的驱动去沁恒官网下CP2102的去Silicon Labs官网下FT232的去FTDI官网下。装完驱动后COM口号可能会变。比如你之前用COM3换了一根线之后变成COM5。上位机程序里配置的COM口号要同步改否则打不开串口。提示如果设备管理器里死活不显示COM口先换一根USB线试试再换一个USB口。有些工控机的USB口供电不足会导致USB转串口线无法正常枚举。前置USB口尤其容易出这个问题尽量插主板后置的USB口。4.2 串口调试助手的使用要点调试阶段强烈建议先用串口调试助手验证通信是否正常再去写代码。常用的串口助手有SSCOM、XCOM、友善串口调试助手等功能大同小异。打开串口助手后按扫码枪的配置设置好波特率、数据位、停止位、校验位选择对应的COM口点“打开串口”。然后扫一个条码看接收区有没有数据出来。如果接收区显示的是乱码大概率是波特率不对。如果完全没数据检查接线和COM口选择。如果数据出来但多了奇怪的字符检查输出格式配置。串口助手还有一个重要功能是“HEX显示”。海康扫码枪默认发送的是ASCII字符但如果你配置了二进制输出或者特殊编码就需要用HEX模式查看原始字节。调试阶段建议同时开ASCII和HEX两个窗口对比看能快速定位是数据内容问题还是编码问题。4.3 用Python快速搭建串口接收程序验证通信正常后就可以写上位机程序了。Python的pyserial库是最常用的串口通信库安装很简单pip install pyserial一个最基础的串口接收程序长这样import serial import time # 配置串口参数要和扫码枪一致 ser serial.Serial( portCOM3, # COM口号 baudrate9600, # 波特率 bytesizeserial.EIGHTBITS, # 数据位 parityserial.PARITY_NONE, # 校验位 stopbitsserial.STOPBITS_ONE, # 停止位 timeout1 # 读超时1秒 ) if ser.is_open: print(f串口 {ser.port} 已打开) try: while True: # 读取一行数据以换行符为结束标志 data ser.readline() if data: # 解码为字符串并去掉首尾空白 barcode data.decode(ascii).strip() print(f收到条码: {barcode}) # 这里可以加入你的业务逻辑比如存数据库、发MQTT等 except KeyboardInterrupt: print(程序退出) finally: ser.close()这段代码的核心是ser.readline()它会一直读到换行符为止。前提是扫码枪的输出格式里配置了换行符作为后缀。如果扫码枪没有发换行符readline()会一直阻塞直到超时。这时候需要改用ser.read(ser.in_waiting)来读取当前缓冲区里的所有数据。实际产线中我建议用in_waiting方式配合超时机制因为扫码枪的数据长度不固定用固定长度读取容易截断。5. 数据解析从字节流到可用条码5.1 常见的数据格式与解析思路海康扫码枪通过串口发出来的数据本质是一串字节。默认情况下是ASCII编码每个字节对应一个字符。比如条码“ABC123”发出来就是0x41 0x42 0x43 0x31 0x32 0x33在串口助手里显示为“ABC123”。但实际配置中扫码枪可能会加上前缀、后缀、条码类型标识等。比如配置了前缀“%”和后缀“\r\n”收到的数据就是“%ABC123\r\n”。解析时就需要先去掉前缀和后缀再提取中间的条码内容。还有一种情况是扫码枪配置了二进制输出或者特殊编码格式。比如某些型号支持把条码数据用十六进制或者Base64编码后发送。这时候就需要先解码再解析。解析的核心思路是先明确扫码枪的输出格式配置根据配置写对应的解析规则。不要拿到数据就瞎猜先去看配置。5.2 粘包与分包问题的处理串口通信是字节流没有消息边界的概念。扫码枪连续发多个条码时上位机收到的数据可能是粘在一起的。比如两次扫码“ABC”和“DEF”收到的可能是“ABCDEF”也可能因为读取时机不同被分成“AB”和“CDEF”。解决粘包问题的标准做法是定义消息边界。最常用的是用换行符\n或者回车换行\r\n作为一条消息的结束标志。扫码枪的输出格式里配置后缀为\r\n上位机按行读取就能正确分割每条消息。如果扫码枪不支持配置后缀或者条码内容本身可能包含换行符那就需要用固定长度或者超时机制来分割。超时机制的逻辑是收到第一个字节后开始计时如果超过一定时间比如50毫秒没有新字节到达就认为一条消息结束。import serial import time ser serial.Serial(COM3, 9600, timeout0.05) buffer b while True: data ser.read(ser.in_waiting or 1) if data: buffer data last_recv_time time.time() else: # 超过50ms没有新数据认为一条消息结束 if buffer and (time.time() - last_recv_time) 0.05: barcode buffer.decode(ascii).strip() print(f解析出条码: {barcode}) buffer b这种方式的优点是适应性强不依赖扫码枪的后缀配置。缺点是需要调超时时间太短会误分割太长会延迟。5.3 正则表达式过滤与数据清洗实际产线上扫码枪读到的内容不一定都是我们想要的。比如可能读到二维码里的URL、JSON字符串或者包含特殊字符的文本。这时候就需要用正则表达式做过滤和提取。假设扫码枪读到的是“SN:1234567890,PN:ABC-001”我们只想要SN后面的数字部分可以用这样的正则import re raw_data SN:1234567890,PN:ABC-001 match re.search(rSN:(\d), raw_data) if match: sn match.group(1) print(f提取到SN: {sn})如果条码内容有固定的格式比如固定18位数字可以用更严格的正则校验pattern r^\d{18}$ if re.match(pattern, barcode): print(条码格式正确) else: print(条码格式异常丢弃)注意正则表达式不要写得太复杂产线环境讲究的是稳定和可维护。能用简单字符串处理解决的不要上正则。正则的性能在高速扫码场景下可能成为瓶颈。6. 常见问题排查与实战避坑6.1 COM口不显示或频繁掉线这是最高频的问题。表现是设备管理器里看不到COM口或者用着用着COM口突然消失程序报“串口被占用”或者“拒绝访问”。排查思路按顺序来第一步换USB口和USB线。前置USB口供电不足是常见原因换到主板后置USB口试试。USB线太长或者质量差也会导致枚举失败换一根短的、带屏蔽的线。第二步检查驱动。设备管理器里如果有未知设备或者带感叹号的设备右键卸载拔掉USB线重新插上让系统重新枚举。如果还是不行手动安装对应芯片的驱动。第三步检查COM口冲突。有些虚拟串口软件或者蓝牙设备会占用COM口号导致物理串口无法分配。在设备管理器的“端口”里看看有没有重复的COM口号有的话手动改一个。第四步检查电源管理。Windows默认会为了省电关闭USB设备导致COM口掉线。在设备管理器里找到对应的USB Root Hub右键属性电源管理选项卡取消勾选“允许计算机关闭此设备以节约电源”。6.2 收到乱码或数据不完整乱码的第一嫌疑永远是波特率不匹配。确认扫码枪和上位机的波特率、数据位、停止位、校验位完全一致。如果确认一致还是乱码检查扫码枪的输出编码格式有些型号支持UTF-8、GBK等编码上位机解码方式要对应。数据不完整的表现是条码被截断比如“1234567890”只收到“12345”。原因通常是读取时机不对数据还没发完就被读走了。解决办法是改用按行读取或者超时机制确保一条完整消息到达后再解析。还有一种情况是扫码枪的发送缓冲区溢出。高速扫码时如果上位机读取速度跟不上扫码枪的缓冲区满了就会丢数据。这时候需要降低扫码频率或者提高波特率或者优化上位机程序的读取效率。6.3 多台扫码枪的COM口管理一个工位接多台扫码枪时COM口管理会变得复杂。每台扫码枪对应一个COM口程序里要同时打开多个串口分别读取。如果用的是USB转串口线每根线都会创建一个COM口。建议在设备管理器里把每个COM口的“高级设置”里改一个固定的COM口号比如扫码枪1固定COM10扫码枪2固定COM11。这样程序里写死COM口号换电脑或者重装系统后不容易乱。如果用的是RS-485总线多台扫码枪挂在同一条总线上通过设备地址区分。上位机发指令时带上目标地址扫码枪收到后判断是不是发给自己的。这种方式省线但配置起来更复杂需要给每台扫码枪分配唯一地址。6.4 常见问题速查表现象可能原因排查方法解决方案COM口不显示驱动未装、USB口供电不足设备管理器查看、换USB口装驱动、换后置USB口收到乱码波特率不匹配、编码格式不对核对串口参数、检查编码配置统一波特率、调整解码方式数据截断读取时机不对、缓冲区溢出观察数据到达规律按行读取、降低扫码频率程序报串口被占用其他程序占用了COM口关闭串口助手等程序确保只有一个程序打开串口扫码枪不响应指令指令格式不对、型号不匹配核对手册指令格式使用对应型号的指令集通信距离短RS-232电平衰减缩短线缆、加中继改用RS-485或加转换器7. 几个容易被忽略的实操细节7.1 接地与屏蔽线的处理工业现场电磁干扰大串口线如果不做屏蔽很容易受到干扰导致通信异常。建议使用带屏蔽层的双绞线屏蔽层单端接地接在工控机一侧的GND上不要两端都接否则会形成地环路反而引入干扰。如果通信距离超过10米或者旁边有大功率电机、变频器建议在串口线上加磁环或者使用带隔离的USB转串口模块。隔离模块虽然贵但能有效防止地电位差导致的通信故障甚至设备损坏。7.2 扫码枪的供电与启动时序海康固定扫码枪通常需要外部供电一般是12V或24V直流。供电不稳会导致扫码枪反复重启表现为COM口频繁掉线。建议用独立的开关电源给扫码枪供电不要和电机、继电器共用电源。启动时序也很重要。工控机先启动扫码枪后上电这样扫码枪上电时工控机已经准备好接收数据了。如果扫码枪先上电它可能会在工控机启动过程中发送一些启动信息这些信息如果被上位机程序读到可能会被误认为是条码数据。7.3 配置备份与恢复扫码枪调好参数后一定要做配置备份。海康扫码枪通常支持把当前配置导出成配置文件或者生成一张配置码表。备份的好处是万一扫码枪被误恢复出厂设置或者换了一台同型号的扫码枪可以直接导入配置不用重新调一遍。我见过太多现场因为没备份配置扫码枪出问题后只能从头调耽误几个小时甚至半天。这个习惯一定要养成。7.4 上位机程序的异常处理串口程序最怕的就是异常没处理程序崩溃后串口没释放导致下次打开报“串口被占用”。写程序时一定要用try-except-finally结构确保任何情况下串口都能被正确关闭。另外串口读取要有超时机制不能无限等待。产线上如果扫码枪坏了或者线断了程序不能一直卡在那里要有超时报警和自动重连机制。import serial import time def read_barcode(port, baudrate, timeout1): try: ser serial.Serial(port, baudrate, timeouttimeout) data ser.readline() if data: return data.decode(ascii).strip() return None except serial.SerialException as e: print(f串口异常: {e}) return None finally: if ser in locals() and ser.is_open: ser.close()这种封装方式虽然每次都要开关串口效率不高但胜在稳定不会出现串口泄漏。如果对性能有要求可以保持串口常开但要做好异常重连。8. 从串口到业务系统的数据链路8.1 串口数据如何接入MES或WMS扫码枪拿到条码只是第一步数据最终要进MES、WMS或者数据库。常见的链路是扫码枪 - 串口 - 上位机程序 - 数据库/MQTT/HTTP接口。上位机程序收到条码后通常要做几件事校验条码格式、查询数据库判断是否重复、写入生产记录、返回结果给PLC或者指示灯。这个过程中串口通信只是数据入口后面的业务逻辑才是核心。如果产线有多个工位每个工位一台扫码枪建议用MQTT或者消息队列把数据汇总到中央系统。这样每个工位的程序只需要负责读串口和发消息业务逻辑集中在服务端维护起来更方便。8.2 与PLC和触摸屏的联动很多产线上扫码枪不是直接接工控机而是接PLC或者触摸屏。比如昆仑通态的触摸屏就支持直接接扫码枪通过串口读取条码后显示在界面上同时把数据传给PLC。这种方案的好处是不需要额外的工控机成本低稳定性好。缺点是灵活性差复杂的业务逻辑不好实现。适合简单的扫码显示和记录场景。如果扫码枪接PLC需要注意PLC的串口通信模块是否支持扫码枪的波特率和数据格式。有些PLC的串口模块只支持特定的协议不能直接透传ASCII数据需要加转换器或者用自由口通信模式。8.3 数据追溯与日志记录工业现场对数据追溯的要求越来越高扫码数据通常要保存至少几个月甚至几年。上位机程序除了实时处理条码还要把原始数据、处理结果、时间戳、工位号等信息写入日志或者数据库。日志建议用结构化格式比如JSON或者CSV方便后续查询和分析。不要用纯文本随便写后期排查问题时格式不统一会很痛苦。import json import datetime log_entry { timestamp: datetime.datetime.now().isoformat(), station: ST01, barcode: 1234567890, result: OK, raw_data: SN:1234567890\r\n } with open(scan_log.jsonl, a) as f: f.write(json.dumps(log_entry) \n)这种JSONL格式每行一条记录既方便人看也方便程序解析。9. 调试串口扫码枪时我踩过的那些坑9.1 波特率“看起来一样”其实不一样有一次现场调试扫码枪和程序都设的9600但就是收不到数据。折腾了半天才发现扫码枪的配置码扫错了实际波特率是19200。串口助手显示的是乱码但因为我当时用的是HEX模式看到一堆FF和00以为是干扰没往波特率上想。教训调试时先用默认参数确认通信正常后再改。改完参数后一定要用串口助手确认新参数下能正常收数据再去改程序。9.2 USB转串口线的“幽灵COM口”Windows有个毛病同一根USB转串口线插不同的USB口会分配不同的COM口号。有时候设备管理器里会残留一堆“幽灵COM口”明明设备已经拔了COM口还显示在那里。这些幽灵COM口会导致新设备分配不到COM口号或者程序打开错误的COM口。解决办法是在设备管理器里选择“查看”-“显示隐藏的设备”把灰色的COM口全部卸载然后重新插拔设备。9.3 扫码枪的“自动感应”模式误触发自动感应模式虽然方便但在产线上容易误触发。比如相邻工位的扫码枪感应到了同一个物体或者传送带上的反光导致扫码枪误判。如果遇到误触发可以调整感应灵敏度或者改用指令触发模式由PLC精确控制扫码时机。自动感应模式适合粗略的扫码场景高精度场景还是指令触发靠谱。9.4 串口线太长导致的“时好时坏”RS-232线超过10米后通信质量会明显下降表现为时好时坏偶尔丢数据。这种问题最难排查因为不是完全不通而是间歇性故障。遇到这种情况不要犹豫直接换RS-485或者加串口中继器。继续用RS-232硬扛只会浪费更多时间。10. 串口扫码枪方案的扩展与替代10.1 网口扫码枪的对比海康也有网口输出的固定扫码枪通过TCP/IP或者Profinet、EtherNet/IP等工业协议通信。网口方案的优势是传输距离远网线100米、速度快、可以组网。缺点是配置更复杂需要设置IP地址、端口号、协议类型而且对网络稳定性要求高。如果产线已经有工业以太网网口扫码枪是更好的选择。如果只是简单的单机扫码串口方案更简单直接。10.2 无线扫码枪的适用场景无线扫码枪适合移动扫码场景比如仓库盘点、物流分拣。海康也有无线扫码枪通过蓝牙或者WiFi通信。无线方案的优点是灵活缺点是延迟和稳定性不如有线而且需要充电或者换电池。产线上固定工位不建议用无线移动场景可以考虑。10.3 视觉读码与激光扫码的选型海康的固定扫码枪主要是激光扫描式适合一维码和部分二维码。如果是DPM码直接零件标记、低对比度二维码、或者破损条码激光扫码枪可能读不出来需要用视觉读码器。海康的VisionMaster视觉软件配合工业相机可以做视觉读码灵活性更高但成本和配置复杂度也更高。选型时要根据实际条码类型和质量来决定。11. 写在最后的一些个人体会串口通信这门技术看起来老但在工业现场的生命力比很多人想象的强得多。我这些年做过的产线项目里串口扫码枪的占比至少还有一半以上。原因无他就是稳定、简单、便宜。调试串口扫码枪最核心的能力不是写代码而是排查问题的思路。遇到问题不要慌按“硬件接线 - 驱动和COM口 - 串口参数 - 数据格式 - 业务逻辑”这个顺序一层层排查绝大多数问题都能定位到。另外养成做配置备份和写调试日志的习惯。现场调试时把每一步的操作和结果都记下来后面出问题回头看日志能省很多时间。我见过太多人调完就忘下次出问题又从头来一遍。最后说一个实用小技巧在扫码枪的串口线上并一个LED指示灯扫码枪发送数据时LED会闪烁。这样不用开电脑就能判断扫码枪有没有在发数据现场排查时特别方便。成本几毛钱效果立竿见影。