Asp.Net 网页上通过COM口发送打印数据的问题

xu_diligent 2013-12-26 05:12:18
各位大虾好,麻烦各位有力的出力,有智慧的出智慧,有捧场的捧捧场了


我通过一个ActiveX插件,实现了在网页上连接Com口通讯,现在我的需求是,通过Com口发送数据到一斑马手持打印机上,打印数据,在C#应用程序上,已经实现了,可以正确打印,实现代码如下:
//需要打印的内容
String sendInfo= "! 0 200 200 660 1\r\n" + "JOURNAL\r\n"
+ "CONTRAST 0 \r\n" + "SPEED 4 \r\n"
+ "PAGE-WIDTH 600 \r\n" + "ENCODING GB18030 \r\n"
+ "SETMAG 1 1" + "SETBOLD 0"
+ "TEXT GBUNSG24.CPF 0 30 30 测试测试:"
+ "1号测试测试"
+ "\r\n"
+ "TEXT GBUNSG24.CPF 0 30 60 测试测试:"
+ "201201311160001"
+ "\r\n"
+ "TEXT GBUNSG24.CPF 0 30 90 测试测试:"
+ "1020402-011000"
+ "\r\n"
+ "TEXT GBUNSG24.CPF 0 30 120 测试测试:"
+ "HJ125测试测试"
+ "\r\n"
+ "TEXT GBUNSG24.CPF 0 30 150 测试测试:"
+ "98"
+ "("
+ "个"
+ ")"
+ "\r\n"
+ "TEXT GBUNSG24.CPF 0 30 180 测试测试:"
+ "测试测试"
+ "\r\n"
+ "TEXT GBUNSG24.CPF 0 30 210 测试测试:"
+ "2013-11-16 14:53:53"
+ "\r\n"
+ "TEXT GBUNSG24.CPF 0 30 240 打印时间:"
+ "2013-11-16 14:53:55"
+ "\r\n"
+ "SETMAG 2 2 \r\n"
+ "SETBOLD 1\r\n"
+ "TEXT GBUNSG24.CPF 0 300 350"
+ "测试数据"
+ "\r\n"
+ "TEXT GBUNSG24.CPF 0 280 400 "
+ "13888888888"
+ "\r\n"
+ "B QR 30 300 M 2 U 10 \r\n"
+ "MA,"
+ "123"
+ "|"
+ "测试测试"
+ "\r\n"
+ "ENDQR\r\n"
+ "Form\r\n" + "PRINT\r\n";
System.Text.Encoding getEn = System.Text.Encoding.GetEncoding("GB2312");
//发送打印内容 ,SpQrCode为应用程序上的sericalPort控件
SpQrCode.Write(getEn.GetBytes(sendInfo.ToString()), 0, getEn.GetBytes(sendInfo.ToString()).Length);

问题
现在在网页上,我依葫芦画瓢,在js里,也将字符串转换成字节流
var bytes = [];
for (var i = 0; i < sendInfo.length; ++i) {
bytes.push(sendInfo.charCodeAt(i));
}

//调用发送方法,ComAxCtrl为网页上的com通讯控件
document.getElementById('ComAxCtrl').CommSend(bytes);

我这个方法执行后,打印机响应了,可是打印出的是一团乱码,所以可能是我转成字节流的方法有问题,麻烦各位帮小弟分析分析,感激涕零
...全文
561 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
xu_diligent 2013-12-27
  • 打赏
  • 举报
回复
引用 5 楼 WM_JAWIN 的回复:
charCodeAt转出来的值好像是unicode码。不是byte。或者传回服务器进行转码,再发送到打印机
嗨,不行呀,我通过ajax来返回值,最终返回的byte[]中,里面的数据和C#中的值是一样的(我核对了),就这样发出去,也还是不行,打印出来的还是乱码 我现在换个插件,用微软的MSCOMM32.OCX,可是调用document.getElementById('MSComm1').Output = cmd_send; 打印机没有任何响应
Dotar 2013-12-27
  • 打赏
  • 举报
回复
捧场
H_Gragon 2013-12-27
  • 打赏
  • 举报
回复
WM_JAWIN 2013-12-27
  • 打赏
  • 举报
回复
charCodeAt转出来的值好像是unicode码。不是byte。或者传回服务器进行转码,再发送到打印机
feiyun0112 2013-12-26
  • 打赏
  • 举报
回复
弹个框看getEn.GetBytes(sendInfo.ToString()),的值对不对

*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/
xu_diligent 2013-12-26
  • 打赏
  • 举报
回复
引用 1 楼 WM_JAWIN 的回复:
转码的事情交给ActiveX去做。JS只管发送文本指令就可以了,或是尝试 ENCODING GB18030 \r\ 改为utf8
ComAxCtrl.ocx 这是我用的插件,后缀名是.ocx的,我能反编译它吗?
xu_diligent 2013-12-26
  • 打赏
  • 举报
回复
引用 1 楼 WM_JAWIN 的回复:
转码的事情交给ActiveX去做。JS只管发送文本指令就可以了,或是尝试 ENCODING GB18030 \r\ 改为utf8
ENCODING GB18030 \r\ 改为utf8 不行的,斑马开发帮助文档里特别指定了,我用的EZ320这款打印机,内部指令编码,包括中文的,必须用GB18030的 转码的事情交给ActiveX去做,可是ActiveX我是网上下别人的
WM_JAWIN 2013-12-26
  • 打赏
  • 举报
回复
转码的事情交给ActiveX去做。JS只管发送文本指令就可以了,或是尝试 ENCODING GB18030 \r\ 改为utf8

62,266

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧