社区
COM/DCOM/COM+
帖子详情
怎样在VB中对多个下位机实现多机通信,要求的是发送的奇偶校验位为1,怎么做?在给等待。
Cerike
2004-04-24 03:59:22
我要用VB写多机通信的上位机通信程序,但是VB中只有一个MSCOMM不能实现谁有办法帮个忙。
但是想了一下可以用C写一个发送程序做成的DLL的文件,可是做不出来,大家帮个忙吧!
...全文
129
6
打赏
收藏
怎样在VB中对多个下位机实现多机通信,要求的是发送的奇偶校验位为1,怎么做?在给等待。
我要用VB写多机通信的上位机通信程序,但是VB中只有一个MSCOMM不能实现谁有办法帮个忙。 但是想了一下可以用C写一个发送程序做成的DLL的文件,可是做不出来,大家帮个忙吧!
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sendwb
2004-05-12
打赏
举报
回复
用API函数打开串口进行通讯,这样灵活得多
hhyttppd
2004-05-04
打赏
举报
回复
gys_yxr(毛毛) 给他个DLL和调用说明不就行了,偶没搞过,但偶是学机械的,将来肯定要接触这方面的东西,学习。
Cerike
2004-05-04
打赏
举报
回复
我是用VB写的,不太明白,
tangxiaosan001
2004-05-04
打赏
举报
回复
同意。
dongge2000
2004-05-02
打赏
举报
回复
同意楼上
gys_yxr
2004-04-27
打赏
举报
回复
HANDLE hidcomdrv;
bool opened=false ;
extern"C"_declspec(dllexport)bool open(int nport,LPSTR Settings)
{
if (opened) return(true);
char spname[8];
DWORD dwerror;
DCB dcb;
wsprintf(spname,"COM%d",nport);
hidcomdrv=::CreateFile(spname,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,NULL);
if (hidcomdrv==INVALID_HANDLE_VALUE)
{
dwerror=::GetLastError();
AfxMessageBox("Can not Open Comm");
return(false);
}
if(::GetCommState(hidcomdrv,&dcb))
{
dcb.BaudRate=9600;
dcb.ByteSize =8;
dcb.fParity =0;
dcb.StopBits =0;
dcb.Parity =0;
// ::Beep(500,100);
if(!::SetCommState(hidcomdrv,&dcb))
{
AfxMessageBox("Can not Open Comm");
return(false);
}
else
{
opened=true;
AfxMessageBox(" Com is Opened");
return(opened);
}
}
else
{
opened=false;
AfxMessageBox(" Com is not Opened");
return(opened);
}
}
extern"C"_declspec(dllexport)bool close()
{
if(!opened||hidcomdrv==NULL)return(true);
::PurgeComm(hidcomdrv,PURGE_TXABORT|PURGE_RXABORT|PURGE_TXCLEAR|PURGE_RXCLEAR);
::EscapeCommFunction(hidcomdrv,CLRDTR);
::CloseHandle (hidcomdrv);
AfxMessageBox("Comm is Colsed");
opened=false;
hidcomdrv=NULL;
return(true);
}
extern"C"_declspec(dllexport)int readStr(LPSTR buffer)
{
int rlen;
if (!opened||hidcomdrv==NULL)return(0);
DWORD dwbytesread,dwerrorflags;
COMSTAT comstat;
static OVERLAPPED ovread;
::ClearCommError (hidcomdrv,&dwerrorflags,&comstat);
dwbytesread=(DWORD)comstat.cbInQue ;
rlen=(int)dwbytesread;
::Beep(500,100);
if (rlen>300)
{
dwbytesread=(DWORD)300;
}
if(!::ReadFile(hidcomdrv,buffer,dwbytesread,&dwbytesread,&ovread))
{
::GetLastError ();
::Beep(5000,1000);
return(0);
}
else
{
rlen=(int)dwbytesread;
::Beep(500,100);
return(rlen);
}
}
extern"C"_declspec(dllexport)int writeStr(LPSTR buffer,int wlen)
{
// char spname[8];
if (!opened||hidcomdrv==NULL)return(0);
DWORD dwbyteswritten=0;
static OVERLAPPED ovwrite;
dwbyteswritten=(DWORD)wlen;
if(!::WriteFile (hidcomdrv,buffer,dwbyteswritten,&dwbyteswritten,&ovwrite))
{
::GetLastError();
::Beep(5000,1000);
return(0);
}
else
{
// wsprintf(spname,"Ret%d",(int)dwbyteswritten);
// AfxMessageBox(" ");
::Beep(500,100);
return((int)dwbyteswritten);
}
}
extern"C"_declspec(dllexport)bool settime(int time)
{
LPCOMMPROP cp;
COMMTIMEOUTS to;
cp=(LPCOMMPROP)malloc(1000);
if(!::GetCommProperties(hidcomdrv,cp))
{
return(false);
}
if (!(cp->dwProvCapabilities &PCF_TOTALTIMEOUTS))
{
AfxMessageBox("Comm OUTTIME SET IS CLOSED");
return(false);
}
to.ReadIntervalTimeout =0;
to.ReadTotalTimeoutMultiplier =0;
to.ReadTotalTimeoutConstant =time;
to.WriteTotalTimeoutMultiplier =0;
to.WriteTotalTimeoutConstant =time;
// ::Beep(500,100);
if(!::SetCommTimeouts (hidcomdrv,&to))
{
return(false);
}
return (true);
}
VB
实现
与
下位机
MODBUS通讯教程
###
VB
实现
与
下位机
MODBUS通讯教程 #### 核心知识点详解: ##### MODBUS通讯协议解析 MODBUS通讯协议是一种广泛应用于工业自动化领域的串行
通信
协议,它主要用于上位机(如个人计算机、服务器)与
下位机
(如PLC、...
VB
上位机与
下位机
通讯
标题与描述
中
的“
VB
上位机与
下位机
通讯”涉及了计算机编程
中
一个重要的概念:上位机与
下位机
的
通信
机制。在自动化控制、数据采集以及其他工业控制系统
中
,这种
通信
方式极为常见。上位机(Host Computer)通常指的是...
modbus 协议
vb
上位机 slave模拟
下位机
在“modbus 协议
vb
上位机 slave模拟
下位机
”这个项目
中
,我们将探讨如何使用
VB
来创建一个上位机程序,该程序可以模拟一个Modbus协议的
下位机
。首先,我们需要理解Modbus协议的基本结构,它包括ASCII、RTU和TCP三种...
(完整版)采用
VB
实现
组态软件与
下位机
的串行
通信
方法研究.doc
### 采用
VB
实现
组态软件与
下位机
的串行
通信
方法研究 #### 摘要 本研究基于DDE(Dynamic Data Exchange)技术探讨了如何在
VB
6.0环境下
实现
组态软件与
下位机
之间的串行
通信
。通过开发一个串口
通信
服务程序来解决某些...
VB
6.0Mscomm控件
实现
串行
通信
为了
实现
上位机与
下位机
之间的有效
通信
,串行
通信
因其高效性、经济性和标准化的特点成为首选方案。 ####
VB
6.0
中
Mscomm 控件的使用 在
VB
6.0
中
,Mscomm 控件是一种非常实用的工具,可用于
实现
串行
通信
功能。...
COM/DCOM/COM+
864
社区成员
3,658
社区内容
发帖
与我相关
我的任务
COM/DCOM/COM+
VB COM/DCOM/COM+
复制链接
扫一扫
分享
社区描述
VB COM/DCOM/COM+
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章