我用mscomm发送一个byte型的数组
利用循环一个字节一个字节的发送
mscomm.Output:=Char(ByteData[i])
Char()会把大于128的数转化为0
请问该怎么发送大于128的Byte型数据?
利用循环一个字节一个字节的发送
mscomm.Output:=Char(ByteData[i])
Char()会把大于128的数转化为0
请问该怎么发送大于128的Byte型数据?
解决方案 »
- SQL问题:如何把一条记录插入到表结尾处?
- 请问哪里有 delphi6 版的 ExpressQuantumGrid5 下载????????????????? 急!!!
- 关于ActiveForm的最简单的问题!!!!!
- 寻 delphi7的关于ado的补丁链接以及delphi7 2003-3-12发布的updates
- 人事关系系统开发
- 初学者怎么办
- 介绍一本用DELPHI做OPENGL的书
- 关于读代码时遇到的困惑,,请在标记为"*"的代码行给我加注释,谢谢!
- 为什么我做的delphi文件会这么大?
- 如何自定义报表预览?
- longword与字符串之间的转换怎样实现????多些!!!
- 备注字段中的Ctrl + F的问题
OutBytes:array of Byte; SetLength(OutBytes,10);
OutBytes[0]:=ByteData[0];
OutBytes[1]:=ByteData[2];
......
MSComm.Output:=OutBytes;
解决方法是这样的:
当你遇到的字符的十六进制大于#$7F时,发送时你就发送#$81+#$你要发的字符!
例如:
你要发送的字符串为:#$32、#$32、#$ab、#$cd、#$ef、#$ff
那么你实际要发送的串为:#$32、#$32、#$81、#$ab、#$81、#$cd、#$81、#$ef、#$81、#$ff
你接收的时候也要做相应的调整,即收到#$81后,先判断紧接着的是不是#$81,如果不是,则表示这个#$81只是一个添加的字符,要将其过滤掉,否则表示确实有一个#$81发送过来。
我用了那个OleVariant才高顶