打印机打印出乱码!在别的电脑上没有问题!

打印机打印出乱码!在别的电脑上没有问题!,第1张

从软件跟硬件两方面下手查查!
软件着手:(1)在BIOS设置中更改打印机并行口模式(要是你用的是传统的打印线而不是USB打印线的话),进入BIOS,"integrated peripheral->parallel port mode"由于你的打印机较老,建议选择SPP模式(标准并行口)
(2)可能是驱动安装不正确或损坏,建议重新安装最新的驱动
(3)用于打印的字体未安装或损坏也有可能,打开"控制面板->字体",双击字体图标,在打开的窗口中单击"文件"菜单,选择安装新字体就OK了
(4)软件有冲突,这种情况应该比较少吧
(5)可能是病毒导致的,建议用诺顿查杀一下
(6)系统文件损坏或丢失,从 *** 作系统安装盘中提取或用系统自带的工具恢复相应系统文件,或重装系统
硬件着手:(1)打印机线缆故障或其接口产生短路或断路,可在MS-DOS下执行命令"dir>prm"来检测
(2)打印机自身硬件问题,可用打印机自检(参见说明书)来判断,若真是这样就只好拿去修了(我怀疑就是这个原因)
(3)打印机内存不足,扩充一下
(4)主板并口损坏(这种情况很少见),最好不要用并口打印,换一条USB线缆来打印
(5)主板I/O芯片损坏(应该也不是这个原因,要不你的电脑还会有其他并发症)
(6)打印口附近的排阻损坏,只有更换新的排阻
不会超过以上原因的,查查打印机内存够的么,希望能够尽快得到解决!

乱码很正常,因为是通讯嘛,硬件的接收当然要可能出现预料外的数据,比如,有些调制方式的Modem就是会必定产生乱码,足够强的电磁干扰信号也可能让数据出错。乱码是有的,但不存在“多余的”这样的概念,如果你觉得“多余”,那只是你通讯协议没制定好。
串口的协议,通常情况下格式是这样的:起始字(多字节),数据区长度(根据需要,一般是1或2字节),校验和(多字节),数据区(多字节)。
每个包都如此,起始字一般是全部正常通讯数据中不可能用到的字节序列组合,校验和一般采用CRC校验的为多(这样比较可靠,源代码在网上很多)。
对协议的接收分包工作,是个稍微复杂的编码工作(代码本身不复杂,你需要思维复杂点),你需要定义一个“接受状态”的标志值,每接一个字节变换一次状态值,它标志着你下一次将接收什么字节,比如:起始字字节1,起始字字节2,……,数据区长度字节1,数据区长度字节2,……,校验和字节1,校验和字节2……,数据区(已经进数据区了,因为已经知道长度,只积攒缓冲而已,一个标志就够)。积攒完数据区字节后,计算校验和,如果不符合前面协议给的结果,则将“接受状态”的标志值复位(将接收起始字字节1),从前面的起始字字节2开始(模拟接收)重复上面过程。以上这个过程需要你熟练编码 *** 控二进制缓冲区。
有很多人把数据结构指针当发送缓冲,后面跟一个sizeof()就直接发出去;接收那端直接预期有多少字节数据,死等在那里;或者,按时间去接受(规定协议间要间隔若干秒),这些都是丝毫不懂通讯的胡作非为,早晚要出问题,如果你代码里有这些做法,推荐你早点把它们改过来。
对串口通讯的接收,实际上用计算机处理起来是这样的:串口是按位接收数据的,但PC机的底层硬件和软件已经能按标准协议规定把位缓冲并识别转换成字节了,不过,每收一个字节的时间远比PC机程序运行慢得多,因此,对你的程序而言,接收的数据,其实就是一串无限长的字节任意序列慢慢向你走来,你一次只能见到一个,任何一个字节都与其他字节没什么特殊地方,它们可能是数据包的一部分或几个数据包,也许有的是错的,甚至根本全是错的,这全靠你程序去分辨——在了解了这些实际的基础上,你才可以设计你的协议和程序。

根据打印机接口不同处理方法不一样

串口接口乱码:波特率设置是否是一样的;确认是串口232还是TTL接口。

USB接口乱码:电源是否稳定;检测驱动安装;usb线抗干扰能力。

直接找厂家


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13241992.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-25
下一篇 2023-06-25

发表评论

登录后才能评论

评论列表(0条)

保存