社区
C++ Builder
帖子详情
TMSComm的二进制方式怎么在bcb里接收数据呀?
我不懂电脑
2002-12-16 11:36:54
最近用TMSComm编写串口通信程序,需要用到二进制方式,看了msdn和delphi的例子都很简单,可在bcb里同样方法收不到数据,bcb里要怎样接收二进制方式下的数据啊?
...全文
211
9
打赏
收藏
TMSComm的二进制方式怎么在bcb里接收数据呀?
最近用TMSComm编写串口通信程序,需要用到二进制方式,看了msdn和delphi的例子都很简单,可在bcb里同样方法收不到数据,bcb里要怎样接收二进制方式下的数据啊?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
我不懂电脑
2002-12-16
打赏
举报
回复
我是按你的写的。不过我的MSComm好像有点问题,开始用事件还可以,后来不知怎么事件机制不起作用了,我现在用的多线程编写的。目前用bcb6总感觉有些小bug前几天用内存自动分配机制老是有内存溢出,后来改成预分配内存暂时解决了。而且bcb5下的Socket控件发出的数据,用bcb6的接收数据长度竟然不匹配。
耙子
2002-12-16
打赏
举报
回复
笑话我了。
你怎么写的?
BCB写OleVariant比Delphi麻烦多了。
我也不知道我这个是不是最简洁的。
我不懂电脑
2002-12-16
打赏
举报
回复
pazee(耙子) ( )
老大名不虚传,问题解决了。
耙子
2002-12-16
打赏
举报
回复
你的怎么写的?我总觉得我写得太麻烦了。
DWORD __fastcall TFrmMain::WriteComm(char *aTxBuff, int BuffSize)
{
OleVariant TxBuff;
int i;
if (MSComm->PortOpen) {
if (BuffSize > 0) {
TxBuff= VarArrayCreate(OPENARRAY(int, (0, BuffSize-1)), varByte);
for (i=0; i<BuffSize; i++)
TxBuff.PutElement(aTxBuff[i], i);
MSComm->Output= TxBuff;
}
}
return 0;
}
耙子
2002-12-16
打赏
举报
回复
if (MSComm->PortOpen)
return;
MSComm->CommPort= 2;
MSComm->Settings= "115200, n, 8, 1";
MSComm->InBufferSize= 4096;
MSComm->OutBufferSize= 2048;
MSComm->RThreshold= 1;
MSComm->SThreshold= 1;
MSComm->InputMode= comInputModeBinary;
try {
MSComm->PortOpen= true;
MSComm->InputLen= 0;
MSComm->InBufferCount= 0;
MSComm->OutBufferCount= 0;
ShowStatueMessage(1);
Log(1, "连接成功");
}
catch (...){
ShowStatueMessage(0);
}
..........
//---------------------------------------------------------------------------
void __fastcall TFrmMain::MSCommComm(TObject *Sender)
{
char szBuf[RxBUFFERSIZE]={0};
int i, j;
OleVariant RxBuff;
switch (MSComm->CommEvent)
{
/* case comEvSend:
ShowMessage("Send!!!!");
case comEvCTS:
ShowMessage("CTS!!!!");
case comEvDSR:
ShowMessage("DSR!!!!");
case comEvCD:
ShowMessage("CD!!!!");
*/
///*
case comEvReceive:
if (MSComm->InBufferCount > 0) {
RxBuff= MSComm->Input;
j= RxBuff.ArrayHighBound(1);
for (i=0; i<=j; i++)
szBuf[i]= RxBuff.GetElement(i);
szBuf[i]= NULL;
#ifdef _DEBUG
RichEdit1->Lines->Add(AnsiString(szBuf));
#endif
if (strstr(szBuf, "+CMTI") != 0) // 收到短消息了
{
// ShowMessage("来短消息了");
ProcessSMS(szBuf);
}
}
break;
//*/
case comEvRing:
ShowMessage("来电话了!!!!");
break;
}
}
你可能主要的麻烦在于 VC和BCB对于 OleVariant支持的不同。
我不懂电脑
2002-12-16
打赏
举报
回复
字符方式下的我会,但是字符方式下大于128的数据会丢失,二进制方式下数据不会丢失,但是收到的和实际情况不同所有数据都是0xFEEE
耙子
2002-12-16
打赏
举报
回复
三十年孤独 自己都弄不明白,我们能明白吗?
我写一个一个利用MSComm32和Nokia 6150通讯发短信的程序,我给你摘一段,班门弄斧了。
warton
2002-12-16
打赏
举报
回复
不太懂,帮你up
invalid
2002-12-16
打赏
举报
回复
帮你up吧.你可以尝试用其它的串口工具检测一下.
也可以用portMon来监控串口通讯.
COM
打印机
TMS
com
m
6. **数据发送和接收**:能够方便地发送和接收ASCII或
二进制
数据,适用于各种通信场景。 7. **POS打印机支持**:特别适合于处理POS打印机的命令,例如打印收据、条形码和二维码。 对于Delphi开发者来说,
TMS
com
m...
TMS
Com
m.rar_
TMS
CO_
TMS
Com
m download_
com
ponent
tms
com
m_
tms
co_串口 中
除此之外,
TMS
Com
m还包含了一套完善的中断服务机制,使得程序能够在接收到数据或者发送数据完成时得到实时的通知,极大地提高了串口通信的效率和响应性。 串口中断服务是串口通信中的关键部分,它允许CPU在不持续...
TMS
Com
m注册工具
在IT行业中,我们常常会遇到各种各样的控件,它们是软件开发过程中的重要组成部分,为开发者提供了丰富的功能接口和便捷的编程
方式
。其中,
TMS
Com
m控件是一款专用于串行通信的组件,广泛应用于设备控制、数据传输等...
电子称串口通讯
在IT行业中,串口通讯是一种常见且重要的通信
方式
,尤其在设备间的数据交换上,例如电子称与计算机的连接和数据传输。本文将深入探讨“电子称串口通讯”的相关知识点,帮助你理解和掌握这一技术。 串口,也称为串行...
delphi6串口通信
因此,在某些特殊场合,特别是对实时性要求较高的场景中,直接采用
二进制
方式
进行数据传输更为高效。 #### Delphi6.0的特点 Delphi6.0是一款强大的可视化编程工具,它融合了C++的高效性和Visual Basic的易用性。该...
C++ Builder
13,871
社区成员
102,693
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章