QQ登录

只需一步,快速开始

威纶触摸屏通过拼音输入中文通过三菱PLC给打印机功能实现

  [ 复制链接 ]
威纶触摸屏通过拼音输入中文通过三菱PLC给打印机功能实现的求助。

大伙好。
我前几天从编程吧购买下载了一个站长写的威纶拼音输入法程序。
遇到好多问题,搞了几天也没搞定,有偿求助啊。

事情经过是这样的。
我通过最新版本的编程软件模拟运行拼音输入的例程,在电脑上是可以运行正常输入与显示中文的。
下载到屏都是小框框不显示内容。
根据帖子指示,修改字体是好了。
但是在打印机上怎么都打印不出中文来着。
一切都正常收发数据。

威纶触摸屏通过拼音输入中文通过三菱PLC给打印机功能实现

威纶触摸屏通过拼音输入中文通过三菱PLC给打印机功能实现

我想实现的功能是在威纶屏输入一些中文内容,
屏连接的是现有的三菱PLC。
然后通过PLC连接打印机,通过相互串口通讯,将屏上的中文在打印机上打印出来。

现在是打印收到屏的数据,打印出来的并不是中文,而是乱七八糟的内容。
我问了打印机厂家,人家只说支持中文接收。
有没大神帮忙下?
头大。

回复

使用道具 举报

大神点评(16)

qq263946146 2021-2-6 21:49:18 显示全部楼层
高手你好,
多谢支持小站啊。
一般在屏上正常显示,传到PLC的寄存里也是正常的数值的。

你可以分2个步骤排查问题。
1.
通讯数据排查
先用三菱plc编程软件监控看看传到PLC寄存的值是否正常先,正常了再怀疑打印机。
比如屏上输入中文啊,对应UNICODE编码应该是 554A,看到PLC也是这值说明通讯啥的应该没问题。
其实打印机可以正常接收到数据,应该通讯上软硬件问题不大。

2.
再看看打印机是否支持处理中文的数据。
显示中文时用到的编码是很多的。
你在我这下载的威纶拼音输入中文,用的是UNICODE编码,
威纶编程软件你可以打开字符显示元件,可以打开一般属性,看看我设置的属性,
其资料格式->编码。下拉会有很多选项供选择。

我用的是国际通过的编译UNICODE.
配方寄存器文件保存的也是这种格式的数据。
所以你通过屏将这种UNICODE格式数据传输到其他硬件显示时。
编码要注意匹配的。

有需要技术帮助,可以联系。



回复

使用道具 举报

工控终极高手 楼主 2021-2-6 22:03:27 显示全部楼层
qq263946146 发表于 2021-2-6 21:49
高手你好,
多谢支持小站啊。
一般在屏上正常显示,传到PLC的寄存里也是正常的数值的。

站长,
按你的提示,我怀疑真是编码不匹配问题。
PLC接收的数值应该没问题。
PLC向打印机发送的数据应该也没问题。

我怀疑真是编码不匹配问题

我怀疑真是编码不匹配问题


打印机上我看了下设置软件的配置,
GB编码哦。
我还特意用串口调试助手 发送GB格式的内容。
用16进制的C6 BB B9 FB 可以打印出来苹果的。
说明是GB格式的。

我怀疑真是编码不匹配问题

我怀疑真是编码不匹配问题


但我买的这个例程是UNICODE格式的啊,就是说不能用了?

回复

使用道具 举报

qq263946146 2021-2-6 22:08:48 显示全部楼层
工控终极高手 发表于 2021-2-6 22:03
站长,
按你的提示,我怀疑真是编码不匹配问题。
PLC接收的数值应该没问题。


绝对不能用。
我编写程序时,本着通用来着。
UNICODE是全球通用的编码,
能显示包含中文在内的所有字符,所以我就用这种编码了。
不过我是提供技术服务的。
可以按你的要求改编码的。

威纶改编码

威纶改编码


你看看威纶控件有几种编码可供使用。
GB的有两种,你还得核实下你打印机用的是哪种。

回复

使用道具 举报

工控终极高手 楼主 2021-2-6 22:11:45 显示全部楼层
qq263946146 发表于 2021-2-6 22:08
绝对不能用。
我编写程序时,本着通用来着。
UNICODE是全球通用的编码,

我花钱,搞了好几天,头大。帮我实现吧。
项目急啊,花点钱没关系的。


威纶真麻烦。
我用步科这些功能都是现成的啊。


回复

使用道具 举报

qq263946146 2021-2-6 22:24:00 显示全部楼层
工控终极高手 发表于 2021-2-6 22:11
我花钱,搞了好几天,头大。帮我实现吧。
项目急啊,花点钱没关系的。

EN,
对于搞过的人来说,有些现成的资源与经验,会简单些。
比如配方文件的生成与编译转换。
当前制作这文件时,我就有写过编码转换的功能。
你熟悉C语言,也可以用我的代码自己编译转换。
时间多自己搞,相反就花点小费我帮你搞。

  1. void CMy111Dlg::OnBnClickedButton1()
  2. {
  3.         CFileDialog dlg(TRUE,"",NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"");
  4.         if(dlg.DoModal() != IDOK)
  5.                 return;

  6.         CString sFileName = dlg.GetPathName();
  7.         CString sFileNameSave=sFileName;
  8.         sFileNameSave = sFileNameSave.Left(sFileNameSave.ReverseFind('.'));
  9.         sFileNameSave +=_T("_1.rcp");
  10.         CFile file;
  11.         if(!file.Open(sFileName,CFile::modeRead) )
  12.                 return;

  13.         wchar_t wChar[25]={0};
  14.         char cMultiStr[25]={0};
  15.         char cTemp;
  16.         int nByteRead=0;
  17.         CFile fileSave;
  18.         fileSave.Open(sFileNameSave,CFile::modeWrite|CFile::modeCreate);
  19.         int nFileLen = file.GetLength();
  20.         int nTimes=nFileLen/2;//宽字符数量;
  21.         int nLeftByte=nFileLen%2;//宽字符不般为2整数;
  22.         bool bHighLowByteReverse=true;//GB编译高低对调开关;
  23.         for(int i=0; i<nTimes; i++)//读取unicode编码的文件内容,一次2字节,转GBK码保存;
  24.         {
  25.                 //如读取unicode编码的0x554a:啊,转GBK编码为0xb0a1;
  26.                 nByteRead = file.Read(wChar,0x02);
  27.                 if(nByteRead != 2)
  28.                         break;       
  29.                 int nMultiStrLen = ::WideCharToMultiByte(CP_ACP, 0, wChar,  -1, NULL, 0, NULL, NULL);
  30.                 ::WideCharToMultiByte(CP_ACP, 0, wChar, -1, cMultiStr, nMultiStrLen, NULL, NULL);
  31.                 if(bHighLowByteReverse)
  32.                 {
  33.                         cTemp = cMultiStr[0];
  34.                         cMultiStr[0]=cMultiStr[1];
  35.                         cMultiStr[1]=cTemp;
  36.                 }
  37.                 fileSave.Write(cMultiStr,0x02);
  38.         }
  39.         file.Close();
  40.         fileSave.Close();
  41. }
复制代码


回复

使用道具 举报

工控终极高手 楼主 2021-2-6 22:35:47 显示全部楼层
qq263946146 发表于 2021-2-6 22:24
EN,
对于搞过的人来说,有些现成的资源与经验,会简单些。
比如配方文件的生成与编译转换。

再顺便帮我完善一下拼音输入界面吧

再顺便帮我完善一下拼音输入界面吧
。我想在操作上尽量跟电脑拼音相似。
按Caps键中英文切换着输入。
Clear实现清屏,重新拼音,输入中文。
Enter键可以将中文显示到编辑框里。
拼音输入后,习惯用空格键确认拼音。
界面控件还能搞写,就是涉及到宏不好修改。
我不这样吧,站长我加你微信,这回帖效率受不了。





回复

使用道具 举报

qq263946146 2021-2-6 22:37:00 显示全部楼层
工控终极高手 发表于 2021-2-6 22:35
。我想在操作上尽量跟电脑拼音相似。
按Caps键中英文切换着输入。
Clear实现清屏,重新拼音,输入中文。 ...

微信 QQ 263946146.
小站随处都是我的联系方式。

欢迎功能定制啊。
回复

使用道具 举报

qq263946146 发表于 2021-2-6 22:37
微信 QQ 263946146.
小站随处都是我的联系方式。

站长在线审核挺快。编程吧更新内容有点慢啊。

偶尔来看看,还挺有收货。

回复

使用道具 举报

qq263946146 2021-2-6 22:41:07 显示全部楼层
我叫一建平 发表于 2021-2-6 22:39
站长在线审核挺快。编程吧更新内容有点慢啊。

偶尔来看看,还挺有收货。

最近很多台湾你懂的。
小站分离点滴编程经验用吧。
搞工程的可以常来看看

回复

使用道具 举报

我也想实现威纶屏中文输入,英文输入,符号输入等等等。
可以自由切换的功能,可以定制么?
我自己用,学习学习。
回复

使用道具 举报

qq263946146 2021-2-7 17:52:24 显示全部楼层
我叫一建平 发表于 2021-2-7 17:47
我也想实现威纶屏中文输入,英文输入,符号输入等等等。
可以自由切换的功能,可以定制么?
我自己用,学 ...

学习用的还是自己摸索吧,
自动动手学的理扎实。
项目上用的可以找我帮你编写代码。
做过类似相关功能。
如下图,我有写一个威纶触摸屏中英文混合输入的代码;

威纶触摸屏中英文混合输入

威纶触摸屏中英文混合输入


1.新用到的地址与窗口
LB 8500
LW 8500
RW_A 45K
新增中文输入窗口:1999,1998,1997

LB 8500      //拼音输入窗口1999,拼音字母输入框输入开关;
LB 8501-8509 //拼音输入窗口1999,拼出的9个中文选择了哪个标识;
LB 8510      //用户窗口正在输入中文的编辑框使用自定义的拼音窗口开关
LB 8511      //用户窗口正在输入中文的编辑框1,
LB 8512      //用户窗口正在输入中文的编辑框2,
LB 8513      //用户窗口正在输入中文的编辑框3,

LW 8500 ,3字   //拼音输入窗口1999,拼音字母输入框
LW 8503 ,10字  //拼音输入窗口1999,显示已输入的中文
LW 8513 ,1字   //拼音输入窗口1999,显示已输入的中文的当前数量;
LW 8514 ,1字   //拼音输入窗口1999/字母输入窗口切换;
LW 8515 ,1字   //拼音输入窗口1999/字母输入窗口状态显示;

2.使用方法
在电脑模拟,将配方寄存器RW_A文件,recipe_a.rcp放到编程软件目录如C:\EBpro6.05\HMI_memory\recipe;
在屏模拟,将配方寄存器RW_A文件,recipe_a.rcp一同下载到屏.

正常输入弹出中文输入窗口后,
参考电脑上的拼音输入法使用方法,
1.空格确定拼音,
2.点击选择中文,
3.回车将选择的全部中文显示到界面编辑框。
4.Esc退出拼音窗口;
5.Shift 切换中/英文/大小写

回复

使用道具 举报

Byron 2021-2-7 17:55:19 显示全部楼层
qq263946146 发表于 2021-2-7 17:52
学习用的还是自己摸索吧,
自动动手学的理扎实。
项目上用的可以找我帮你编写代码。

站长拿出来下载吧。我也在用威纶,刚好也想实现这个功能
回复

使用道具 举报

qq263946146 2021-2-7 18:03:51 显示全部楼层
Byron 发表于 2021-2-7 17:55
站长拿出来下载吧。我也在用威纶,刚好也想实现这个功能

威纶中英文大小写字符混合输入程序:

威纶中英文大小写字符混合输入程序

威纶中英文大小写字符混合输入程序


附件带有三个版本的配方文件。
简单的使用文档。
最新版本写的威纶例程。

模拟时点击编辑框会弹出中文输入窗口如上。
Shift键可在中文,英文小写,英文大写三个界面切换。
Clear清屏。
Esc退出输入窗口。
Space 确定输入的拼音拼出9个中文供选择。或在英文时确定英文。
Enter 将确定的英文或中文等保存到界面文本框。
具体操作可以当作电脑上的简易拼音输入法,参考着用。

请点击此处下载

请先注册会员后在进行下载

已注册会员,请先登录后下载

文件名称:GBReverse.rar 
文件大小:1.29 MB  售价:30金币
下载权限: 不限 以上或 VIP会员   [购买捐助会员]   [充值积分]   有问题联系我

如果刚接触威的话,
我也有录制两套教程。
拼音主要是通过宏来实现的,可以参考宏那套。



回复

使用道具 举报

haldong 2021-2-21 11:24:01 显示全部楼层
qq263946146 发表于 2021-2-7 18:03
威纶中英文大小写字符混合输入程序:

好东西。我下载来借鉴借鉴。
我习惯复制粘贴,
不爱用脑



回复

使用道具 举报

qq263946146 2021-2-21 11:33:50 显示全部楼层
haldong 发表于 2021-2-21 11:24
好东西。我下载来借鉴借鉴。
我习惯复制粘贴,
不爱用脑


我做项目时,也是想着能快点搞定就好。
哪还有心事分析代码是如何实现的,原理是什么。
至于学习那都是闲来无事时的事情。
所以这个例程在编写时,
输入法界面编号我用最后的,
涉及的寄存器编码也是用最后的。
就是为了让你这类需求的可能直接复制到自己项目中。
不用顾忌屏界面重复冲突,
不用顾忌屏寄存器重复冲突。

但你用时尽量熟悉自己屏的程序,
一般人都是从头,从0开始使用寄存器与界面编号。
但不排除小部分另类程序员。

回复

使用道具 举报

DHHHHHH 2023-9-9 10:48:47 显示全部楼层
qq263946146 发表于 2021-2-21 11:33
我做项目时,也是想着能快点搞定就好。
哪还有心事分析代码是如何实现的,原理是什么。
至于 ...

站长,你这个我下载后是用GB的配方文件吗,unicode的配方文件替换掉进去怎么不是中文,求解
回复

使用道具 举报

点击查看
快速回复 返回列表 客服中心 搜索