sppcom怎样发送大于128的数据!发送的都是小于128的数据!紧急!

lanchat 2004-01-06 11:34:32
sppcom怎样发送数据?发送的都是小于128的数据!
procedure TForm1.Button3Click(Sender: TObject);
var ss:pchar;
begin


getmem(ss,12);

s[0]:=#(245);
ss[1]:=#132;
ss[2]:=#128;
ss[3]:=#129;
ss[4]:=#128;
ss[5]:=#128;
ss[6]:=#133;
ss[7]:=#13;
ss[8]:=#0;
comm1.WriteCommData(ss,length(ss)); //发送的都是小于128的数据!
freemem(ss);
end;
...全文
107 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
lanchat 2004-01-07
  • 打赏
  • 举报
回复
刚开始我并没有发现spcom在delphi的问题,可是只要重新启动机器,它就不能发送第8位bit为1的数据(变为0,正数)了
lanchat 2004-01-07
  • 打赏
  • 举报
回复
如果用spcom在c++builder下的程序运行一次,关闭。然后再运行上述spcom在delphi下的程序,就一切正常了!真是奇怪!看看有无高手解决呢?
lanchat 2004-01-07
  • 打赏
  • 举报
回复
这个spcom在c++builder下使用就没有问题!在delphi下接受也没问题,但是在有的机器就不能接受,有的就不能正常发送!看来delphi在这些接近于底层的数据类型方面不够稳定!可能解决不了吧?
tglong 2004-01-07
  • 打赏
  • 举报
回复
我用Comport2.63没出现过类似问题,会不会是某些设置
8bit数据位吗
tglong 2004-01-07
  • 打赏
  • 举报
回复
这样可以吗:
var
ss : array of byte;
begin
setlength(ss,12);
s[0]:=#(245);
ss[1]:=#132;
ss[2]:=#128;
ss[3]:=#129;
ss[4]:=#128;
ss[5]:=#128;
ss[6]:=#133;
ss[7]:=#13;
ss[8]:=#0;
comm1.WriteCommData(ss,length(ss));
end;
lanchat 2004-01-07
  • 打赏
  • 举报
回复
怎样用spcom发送的时候不让它认为发送的时候不去掉那个第8位置的bit呢?
lanchat 2004-01-07
  • 打赏
  • 举报
回复
我只是要发送的数据类型是一个字节大小。是byte或者char类型。(可是接受没问题,按照char类型处理)。上述程序大家应该看得出来是char格式(不能采用var ss:pwidechar(这里不合适),可是发送的时候总是作为正数发送出去(将最高位自动取掉),关键就是这个最高位置如何能不被去掉?怎样发送他们呢?
lanchat 2004-01-06
  • 打赏
  • 举报
回复
可是我要发送上面的几个字节数据,大于128的就会自动减掉128了!你的办法还是不可!
ChinaOk 2004-01-06
  • 打赏
  • 举报
回复
直接把数据作为字符串发出即可。
str:="汉字处理";
comm1.***(str);
clacklin 2004-01-06
  • 打赏
  • 举报
回复
再给你写个清楚一些的,
....
ss[0]:=#132 and $FF;//#132是个举例的数字
ss[1]:=#132 shr 8;
.....

另一端收到后,要用(ss[1] shl 8) or ss[0],这样可以复原成#132
clacklin 2004-01-06
  • 打赏
  • 举报
回复
发送数据最好要有通讯规约的。所有发送的数据你要预先估计它的大小,这样就可以确定发送这个数据需要几个字节。假如这个数据是128以下的,只需如你所作的,用一个字节。同样,如果是128以上65536以下的数据,则需占用两个字节来通讯。这时可以用high和low函数或者位移函数把它进行分解合并的。

楼主的汇编没学过吧,哈哈。
outer2000 2004-01-06
  • 打赏
  • 举报
回复
var ss:pwidechar;
xiaoxiaobai 2004-01-06
  • 打赏
  • 举报
回复
没明白你的意思
到底是要发128个字节的数据,还是里面有多少个字节就发多少个字节?
前者用
comm1.WriteCommData(ss,length(ss));
后者用
comm1.WriteCommData(ss,128);
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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