社区
C#
帖子详情
C# 上位机传数据给下位机
Dazelongfu
2014-09-21 06:34:36
我使用VS2005编译的程序作为上位机,会发送打印数据交给下位机打印;其中有一项数据是11位的string字符串,可以正常打印,现在我在上位机做了修改,其中一串string类型数字改成14位,发现打印过程中每次都打不完整(只能打11位),并且末几位总是打印到下一行的开始,取代了下一行的数据,
断点调试,发现生成的字符串是一长串字符,而且是完整的。所以不懂为什么这个14位的不能正常打出,有大侠能帮我分析一下吗?我只负责上位机,对下位机一点不懂,谁能告诉我下思路啊!
...全文
619
13
打赏
收藏
C# 上位机传数据给下位机
我使用VS2005编译的程序作为上位机,会发送打印数据交给下位机打印;其中有一项数据是11位的string字符串,可以正常打印,现在我在上位机做了修改,其中一串string类型数字改成14位,发现打印过程中每次都打不完整(只能打11位),并且末几位总是打印到下一行的开始,取代了下一行的数据, 断点调试,发现生成的字符串是一长串字符,而且是完整的。所以不懂为什么这个14位的不能正常打出,有大侠能帮我分析一下吗?我只负责上位机,对下位机一点不懂,谁能告诉我下思路啊!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
於黾
2014-09-22
打赏
举报
回复
由于原来的程序是固定11个数字,所以打印程序就是打印在固定的位置 而你现在要改成14个数字 要么修改打印的位置,让它往左移3个数字 要么更加优化,让它能够识别出到底有几个数字,然后动态的计算位置 总之不修改是不成的
於黾
2014-09-22
打赏
举报
回复
现在可以确定的是,你生成了14个字节,已经写到文件里了 而另一个程序也成功的从你的文件里取出了14个字节 这个跟通信就已经没有关系了,你的程序再改也没有用 这个问题就是打印程序在取出字符串之后,打印的位置不正确,你需要修改打印程序啊
Dazelongfu
2014-09-22
打赏
举报
回复
StringBuilder sb1_menu = new StringBuilder(); StringBuilder sb2_user = new StringBuilder(); //StreamReader sr2 = new StreamReader(dir+"PrintHex.bin"); //FileStream fs2 = new FileStream (dir+"FinalHexNew.bin",FileMode.Create,FileAccess.Write); StreamReader sr2_menu = new StreamReader(dir + "PrintHex_menu.bin"); StreamReader sr2_user = new StreamReader(dir + "PrintHex_user.bin"); FileStream fs2_menu = new FileStream(dir + "menuInfo.bin", FileMode.Create, FileAccess.Write); FileStream fs2_user = new FileStream(dir + "userInfo.bin", FileMode.Create, FileAccess.Write); sb1_menu.Append(sr2_menu.ReadToEnd()); byte[] byte_total = HexToByte(sb1_menu.ToString()); fs2_menu.Write(byte_total, 0, byte_total.Length);//写数据信息 sb2_user.Append(sr2_user.ReadToEnd()); byte_total = HexToByte(sb2_user.ToString()); fs2_user.Write(byte_total, 0, byte_total.Length);//写数据信息 Hi,这是生成16进制打印文件的代码,到这我去查看userInfo.bin。
Dazelongfu
2014-09-22
打赏
举报
回复
StringBuilder sb1_menu = new StringBuilder(); StringBuilder sb2_user = new StringBuilder(); //StreamReader sr2 = new StreamReader(dir+"PrintHex.bin"); //FileStream fs2 = new FileStream (dir+"FinalHexNew.bin",FileMode.Create,FileAccess.Write); StreamReader sr2_menu = new StreamReader(dir + "PrintHex_menu.bin"); StreamReader sr2_user = new StreamReader(dir + "PrintHex_user.bin"); FileStream fs2_menu = new FileStream(dir + "menuInfo.bin", FileMode.Create, FileAccess.Write); FileStream fs2_user = new FileStream(dir + "userInfo.bin", FileMode.Create, FileAccess.Write); sb1_menu.Append(sr2_menu.ReadToEnd()); byte[] byte_total = HexToByte(sb1_menu.ToString()); fs2_menu.Write(byte_total, 0, byte_total.Length);//写数据信息 sb2_user.Append(sr2_user.ReadToEnd()); byte_total = HexToByte(sb2_user.ToString()); fs2_user.Write(byte_total, 0, byte_total.Length);//写数据信息 Hi,这是生成16进制打印文件的代码,到这我去查看userInfo.bin。
Dazelongfu
2014-09-22
打赏
举报
回复
没有找到原因,怎么解决啊
於黾
2014-09-22
打赏
举报
回复
这个问题看起来比较明显 打印程序就是无脑的读取字符串并打印在固定的位置,而不是按照字符串长度从后往前填写到格子里
Dazelongfu
2014-09-22
打赏
举报
回复
“一长串字符是完整的”, 我要输出的printerString[]字符串是完整的。
不能正常打印是因为没有按照正常位置打印出来,一行
一行打出来的效果是只能打11个,然后打不了。不知道这样描述是不是比较清楚?
lkf181
2014-09-22
打赏
举报
回复
人家约定好了的吧,不能顺便改的
Dazelongfu
2014-09-22
打赏
举报
回复
啊,协议我不清楚啊
於黾
2014-09-22
打赏
举报
回复
你自己都没理清你发送的字符数组怎么转换成字符串的,让别人帮你破解协议吗? 那你这数组是怎么生成的,拍脑袋生成的吗
Dazelongfu
2014-09-22
打赏
举报
回复
[0] 1 byte [1] 3 byte [2] 0 byte [3] 1 byte [4] 0 byte [5] 1 byte [6] 0 byte [7] 49 byte [8] 49 byte [9] 49 byte [10] 49 byte [11] 176 byte [12] 219 byte [13] 206 byte [14] 233 byte [15] 202 byte [16] 176 byte [17] 194 byte [18] 189 byte [19] 212 byte [20] 170 byte [21] 213 byte [22] 251 byte [23] 127 byte [24] 54 byte [25] 53 byte [26] 52 byte [27] 51 byte [28] 50 byte [29] 49 byte [30] 50 byte [31] 51 byte [32] 52 byte OutputReportBuffer {维数:[33]} byte[] 这是发给下位机的最终数组, 谁能告诉我这和: 2014 09 22 陆佰伍拾肆亿叁仟贰佰壹拾贰万叁仟肆佰伍拾陆元整 6543212345600 111 111 有什么关系啊
Dazelongfu
2014-09-21
打赏
举报
回复
哦,我检查中间临时文件(.bin),发现输出字符串是完整的一串,包含14位的字符串。上位机文本框做修改,但是打印协议没有修改,我是根据生成的中间临时文件(.bin)来判断的。那大叔你能告诉我是上位机的问题还是下位机的问题吗? 回答分就给你了。
以专业开发人员为伍
2014-09-21
打赏
举报
回复
上位机是客户端,下位机是服务器。不要因为“上位机”这个词儿挺时髦就以为它很高级。实际上,你既然做客户端,就应该遵守服务器的通讯约定,不能胡乱“改变指令”。你所谓的“现在我在上位机做了修改”是怎样修改的,根据什么呢?贴出来! 你调试说“一长串字符是完整的”,然后就问人家为什么“不能正常打印”,这到底是什么意思呢?你从哪一个实际例子或者设备指令手册上看出你的下位机可以打印14位字符呢?
C#
上位
机
源程序 下位
机
单片
机
实现控制电
机
博客地址:https://blog.csdn.net/qq_35654286/article/details/138512535?spm=1001.2014.3001.5501
C#
上位
机
源程序 下位
机
单片
机
实现控制电
机
C#
上位
机
源程序 下位
机
单片
机
实现控制电
机
C#
上位
机
源程序 下位
机
单片
机
实现控制电
机
C#
上位
机
源程序 下位
机
单片
机
实现控制电
机
C#
上位
机
源程序 下位
机
单片
机
实现控制电
机
C#
上位
机
源程序 下位
机
单片
机
实现控制电
机
C#
上位
机
源程序 下位
机
单片
机
实现控制电
机
C#
上位
机
源程序 下位
机
单片
机
实现控制电
机
C#
上位
机
源程序 下位
机
单片
机
实现控制电
机
C#
上位
机
源程序 下位
机
单片
机
实现控制电
机
C#
上位
机
源程序 下位
机
单片
机
实现控制电
机
C#
上位
机
源程序 下位
机
单片
机
实现控制电
机
C#
上位
机
源程序 下位
机
单片
机
实现控制电
机
C#
上位
机
源程序 下位
机
单片
机
实现控制电
机
基于
C#
上位
机
开发的51下位
机
实现贪吃蛇和俄罗斯方块
通过
C#
编写的上位
机
完成51单片
机
的硬件下位
机
实现贪吃蛇和俄罗斯方块等游戏的开发。很不错。
C#
上位
机
控制STM32实现LED串灯控制 包含STM32下位
机
源代码和
C#
上位
机
源代码
C#
上位
机
控制STM32实现LED串灯控制 包含STM32下位
机
源代码和
C#
上位
机
源代码
C#
上位
机
以及下位
机
源码
基于
C#
编写的上位
机
软件 配合一个下位
机
,都是源码,可以参考,也可以直接用,内带使用说明
位置PID单闭环调参、仿真、上位
机
、下位
机
源代码
C#
上位
机
源代码分享+STM32下位
机
源代码分享
C#
串口上位
机
编程对STM32控制直流有刷电
机
PID位置单闭环运行过程深度解析(位置式PID) 本例是实现位置环的位置式PID控制.根据编码器的反馈值就可以得到位置值,然后通过PID算法,得到最终输出的占空比调整速度.在程序上是跟增量式PID相近的,不同的是PID的参数和PID算法的实现. 1、STM32位置单闭环实现 2、位置式PID算法控制 3、
C#
上位
机
调参 4、运行过程上位
机
同步仿真 一、实现功能 通过上位
机
观察STM32下位
机
运行过程
数据
流、运行状况检测,通过上位
机
实现PID调参、目标速度设置、运行方案调整、控制闭环状态实 时监测 1、上位
机
PID调参 2、通讯
数据
流监测 3、各节点运行状态检测 4、PID目标值设置 5、运行方向调整 6、闭环状态探析
C#
110,571
社区成员
642,565
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章