社区
C++ Builder
帖子详情
TMSComm的二进制方式怎么在bcb里接收数据呀?
我不懂电脑
2002-12-16 11:36:54
最近用TMSComm编写串口通信程序,需要用到二进制方式,看了msdn和delphi的例子都很简单,可在bcb里同样方法收不到数据,bcb里要怎样接收二进制方式下的数据啊?
...全文
232
9
打赏
收藏
TMSComm的二进制方式怎么在bcb里接收数据呀?
最近用TMSComm编写串口通信程序,需要用到二进制方式,看了msdn和delphi的例子都很简单,可在bcb里同样方法收不到数据,bcb里要怎样接收二进制方式下的数据啊?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
在VB下提取的,可以delphi中轻松操作
COM
端口,尤其是POS打印时。
TMS
Com
m注册工具
TMS
Com
m注册工具,自动检测
TMS
Com
m控件注册情况,并自动注册
TMS
Com
m控件
BCB
下自制串口调试助手源码
BCB
下自制串口调试助手源码
TMS
Com
m.rar_
TMS
CO_
TMS
Com
m download_
com
ponent
tms
com
m_
tms
co_串口 中
串口中断服务函数集,注释清晰,使用十分方便 ,只需做很小改变就可实现移植。
TMS
Com
m注册工具-下载即用.zip
代码转载自:https://pan.quark.cn/s/35fbc1c0259a 在信息技术领域中,开发者经常需要与各式各样的控件进行交互,这些控件是软件构建过程中的关键元素,为编程人员提供了多样化的功能接口和高效的编程途径。 其中,
TMS
Com
m控件作为一个专门用于串行通信的组件,在设备管理、数据交换等场景中得到了广泛的应用。 本文将系统性地阐述
TMS
Com
m注册工具的功能特性、操作流程以及其在实际项目中的具体运用。
TMS
Com
m控件是由
TMS
Software公司设计的一款高效且功能强大的串行通信解决方案,它兼容多种串行通信标准,例如RS232、RS485等,并且配备了丰富的应用程序接口,为开发者的进一步定制提供了便利。 然而,与所有其他Windows平台下的控件类似,
TMS
Com
m控件在投入使用前必须完成注册步骤,以确保系统能够准确识别并调用该组件。
TMS
Com
m注册工具应运而生,其主要职责是自动检测
TMS
Com
m控件的注册情况,并在必要时执行注册动作。 这一工具显著优化了开发者的工作流程,有效预防了手动注册过程中可能出现的错误和繁琐操作。 借助
TMS
Com
m注册工具,用户能够保证控件注册的迅速性和精确性,进而提升整体开发效能。
TMS
Com
m注册工具的操作步骤十分便捷。 用户首先需要获取并解压包含“
TMS
Com
m注册工具”的文件包,确认文件完整性。 随后,启动该工具,它会自动检测系统配置,识别任何未注册的
TMS
Com
m控件。 一旦发现未注册的组件,工具将向用户发出注册提示,用户只需通过点击确认即可顺利完成整个操作。 在整个使用过程中,用户无需拥有深厚的计算机专业知识或编程背景,这使
TMS
Com
m注册工具成为无论是初学者还是资深开发者的理想选择。 在实际操作层面,
TMS
Co...
C++ Builder
13,875
社区成员
102,696
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章