社区
网络及通讯开发
帖子详情
BCB怎么实现单字节收发?(用API)
aloevera
2006-03-14 05:54:55
我的毕业论文是 <基于RS232的多仪表数据采集系统的设计>
现在准备用上位机用BCB,下位机是两块单片机(AT89S51)用C51编程.
协议是采用多机通信,首先要上位机发送地址(比如01或02),然后从机看是否吻合自己的地址,并发送确认地址回主机.
下面就是正常的数据收发了
在地址发送和接受地址确认时的单字节是怎么编程的?
(用API WiteFile 和 RradFlie之类的实现 )]
谢谢!
...全文
193
6
打赏
收藏
BCB怎么实现单字节收发?(用API)
我的毕业论文是 现在准备用上位机用BCB,下位机是两块单片机(AT89S51)用C51编程. 协议是采用多机通信,首先要上位机发送地址(比如01或02),然后从机看是否吻合自己的地址,并发送确认地址回主机. 下面就是正常的数据收发了 在地址发送和接受地址确认时的单字节是怎么编程的? (用API WiteFile 和 RradFlie之类的实现 )] 谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
dxqxiaoqiang
2006-03-24
打赏
举报
回复
用串口控件也行,可以用victor串口控件,也有参考源码,并且是开源的。
dxqxiaoqiang
2006-03-24
打赏
举报
回复
你可以去买本C++Builder与RS232通信,有源码光盘
调试的时候最好用串口助手。
aloevera
2006-03-17
打赏
举报
回复
这知道一点
下面是我的部分程序:
void __fastcall TForm1::Button1Click(TObject *Sender)
{ char *ComNo;
DCB dcb;
String Temp;
//取得要打开的通信端口
Temp = "COM"+IntToStr(rdCOM->ItemIndex +1);
// 转换到指针类型的Char
ComNo = Temp.c_str();
hComm = CreateFile(ComNo,GENERIC_READ | GENERIC_WRITE,
0, NULL, OPEN_EXISTING, 0, 0);
//这样写居然检测不到COM口
// hComm = CreateFile("COM1",GENERIC_READ|GENERIC_WRITE,
0,NULL,OPEN_EXISTING, 0, 0);
//这样才能检测到COM口 ? ?????为什么啊??????/
if (hComm == INVALID_HANDLE_VALUE) // 如果通信端口未打开
{
MessageBox(0, "打开通信端口错误!!","Comm Error",MB_OK);
return;
}
//将dcb地址传入,以取得通信参数
GetCommState(hComm,&dcb); // 得知目前通信端口的状态
dcb.BaudRate = CBR_9600; // 设置波特率为9600
dcb.ByteSize = 8; // 字节为 8 bit
dcb.Parity = MARKPARITY; // Parity 为 MARK
dcb.StopBits = ONESTOPBIT; // 1 个Stop bit
//通信端口设置
if (!SetCommState(hComm, &dcb)) { // 设置通信端口的状态
MessageBox (0, "通信端口设置错误!!!","Set Error",MB_OK);
CloseHandle(hComm);
return;
}
}
void __fastcall TForm1::Button5Click(TObject *Sender)
{
unsigned long lrc;
String Temp;
DCB dcb;
char *SendData;
if (hComm==0) return; //检查Handle值
Temp = 2;//发送从机的地址
SendData = Temp.c_str(); //字符串转换WriteFile(hComm,1,1, &lrc,NULL); // 送出地址
WriteFile(hComm,SendData,1, &lrc,NULL); // 送出地址
//将dcb地址传入,以取得通信参数
GetCommState(hComm,&dcb); // 得知目前通信端口的状态
dcb.BaudRate = CBR_9600; // 设置波特率为9600
dcb.ByteSize = 8; // 字节为 8 bit
dcb.Parity = NOPARITY; // Parity 为 None
dcb.StopBits = ONESTOPBIT; // 1 个Stop bit
//通信端口设置
if (!SetCommState(hComm, &dcb)) { // 设置通信端口的状态
MessageBox (0, "通信端口设置错误!!!","Set Error",MB_OK);
CloseHandle(hComm);
return;}
char inbuff[2];
DWORD nBytesRead;
ReadFile(hComm, inbuff,1,&nBytesRead,NULL); //接受从机地址回应
inbuff[1]='\0';
if(inbuff[0]=='2')
Label3->Caption="已连到2#机"; //显示已连到从机
else return;
}
调试的时候发送不出去,程序不知怎么的好象死在那了
高人给我指点一下吧!
yy2001
2006-03-17
打赏
举报
回复
学习
netsys2
2006-03-15
打赏
举报
回复
通信时只读1个BYTE不就可以了吗?
再说别人只发1BYTE,你也只能收1BYTE啊
CCED136
2006-03-15
打赏
举报
回复
修改 BCB 程序的字节对齐选项,设置成 1 字节对齐就可以了
BCB
高手进阶 (八)TServerSocket和TClientSocket应用技巧
BCB
高手进阶(八)TServerSocket和TClientSocket应用技巧:nxyc_twz@163.com 在网络编程中,WinSocket
API
编程是最基本,也是最繁锁的部分。但是,如果你是采用C++Builder 5 作为编程平台,事情就变得简单的多了!通过我的介绍,相信你一定能快速掌握设计基于C/S体系的方法与技巧。 在
BCB
中,TServerSocke
can总线一帧多少字节多少位_MCU扩展CAN/CAN FD接口方案MCP2518FD+ATA6563
“本文介绍MCU通过SPI串口扩展CAN/CAN FD接口扩展方案,该方案基于MCP2518FD+ATA6563,可快速部署应用于实际项目。”1.CAN FD和CAN 2.0的区别CAN FD解决了CAN总线上日益增长的带宽需求。相比于CAN2.0主要有2点增强:将数据位段增加到最多64数据字节(CAN 2.0最大为8个数据字节)。标称位和数据位使用不同的比特率,标称位的比特率和CAN...
c语言如何
实现
两台电脑的tcp互发消息_从一个HTTP请求来读懂HTTP、TCP协议
点击上面蓝字关注我们从一个HTTP请求来看网络分层原理两台主机间会通过非常多网络设备,不管哪个网络设备都会发生数据丢失,如果发生数据丢失的话,会发生数据重传,会出现数据重复(之前丢失的包并不是丢失而是产生了延时)。数据传输的介质也可能多样,如内网里通过网线进行传输,连接到公网的话会通过光纤进行连接,所以要
实现
不同介质间信号的转换,还有从光纤到路由器无线脉冲转换,距离远的话还有信号衰减问题...
串口通信编程--多线程异步方式
转载自:http://blog.csdn.net/mingojiang/article/details/7713529
SPCOMM控件与C++Builder 5串行通信实践教程
串行通信,是指数据按照位的形式,一个接一个地在单个信道上进行传输。这种方式与并行通信不同,后者在同一时刻可以通过多条线路同时传输多位数据。串行通信的主要特点包括:成本效益:由于使用较少的线路,相对于并行通信,串行通信在硬件成本上更为经济。距离优势:适合长距离传输,因为单线传输的信号衰减问题较小。简单性:连接和硬件接口较为简单,易于
实现
。速度限制:由于是逐位传输,相对于并行通信,其速度受到一定限制,特别是在高频数据传输中更为明显。
网络及通讯开发
1,317
社区成员
8,874
社区内容
发帖
与我相关
我的任务
网络及通讯开发
C++ Builder 网络及通讯开发
复制链接
扫一扫
分享
社区描述
C++ Builder 网络及通讯开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章