水电电工知识
电工技术|通过MSComm控件进行WINCC串口通讯总结
2017-02-17  浏览:51
水电之家讯:目的:通过MSComm控件实现WINCC串口通讯(C脚本和VB脚本两种方式)

测试环境:操作系统 win7

WINCC版本:V7.2

辅助工具:串口调试工具

ASPD虚拟串口工具

测试WINCC组态画面:

测试实验过程画面:



1、通过VB实现串口通讯

画面对象“打开画面”VB事件脚本:

Sub onOpen()

Dim objMSComm, tagConnection

Set objMSComm = hmiRuntime.Screens("串口通讯VB版").ScreenItems("COM")

Set tagConnection = HMIRuntime.Tags("tagConnection1")

If objMSComm.PortOpen = False Then

' Assign com port number

objMSComm.Commport = 4

' Values: 9600 Baud, N - No Parity, 8 - Databit, 1 - Stopbit

objMSComm.Settings = "9600,N,8,1"

objMSComm.RThreshold = 1

objMSComm.SThreshold = 0

objMSComm.InBufferCount = 0

objMSComm.InputLen = 0

objMSComm.PortOpen = True

tagConnection.Write (True)

HMIRuntime.Trace("Port open." & vbCrLf)

Else

HMIRuntime.Trace("Port is already opened." & vbCrLf)

End If

End Sub

MSComm控件OnComm对象事件:

Sub onOpen()

Dim objMSComm, tagConnection

Set objMSComm = HMIRuntime.Screens("串口通讯VB版").ScreenItems("COM")

Set tagConnection = HMIRuntime.Tags("tagConnection1")

If objMSComm.PortOpen = False Then

' Assign com port number

objMSComm.Commport = 4

' Values: 9600 Baud, N - No Parity, 8 - Databit, 1 - Stopbit

objMSComm.Settings = "9600,N,8,1"

objMSComm.RThreshold = 1

objMSComm.SThreshold = 0

objMSComm.InBufferCount = 0

objMSComm.InputLen = 0

objMSComm.PortOpen = True

tagConnection.Write (True)

HMIRuntime.Trace("Port open." & vbCrLf)

Else

HMIRuntime.Trace("Port is already opened." & vbCrLf)

End If

End Sub

“SEND按钮”鼠标左键按下事件:

Sub onLButtonDown(ByVal Item, ByVal Flags, ByVal x, ByVal y)

Dim objMSComm

Dim strTemp,buffer

HMIRuntime.Trace("Communication!" & vbCrLf)

Set objMsComm = HMIRuntime.Screens("串口通讯VB版").ScreenItems("COM")

Set buffer = HMIRuntime.Tags("Buffer1")

strTemp = buffer.Read

If objMSComm.PortOpen = True Then

If strTemp<>"" then

objMSComm.Output=strTemp

End If

End If

End Sub

2、通过C脚本实现串口通讯

画面对象“打开画面”C事件脚本:

#include "apdefap.h"

void onOpenPicture(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)

{

#define GetObject GetObject

__object *pdl=NULL;

__object *pic=NULL;

__object *obj=NULL;

int i,j;

pdl = __object_create("PDLRuntime");

if(pdl)

{

printf("portopen get pdl ok ");

}

pic=pdl->GetPicture("串口通讯C版");

if(pic)

{

printf("portopen get pic ok ");

}

obj=pic->GetObject("COM");

if(obj)

{

printf("portopen get obj ok ");

}

if(obj->PortOpen==0)

{

obj->Commport = 3;

obj->Settings = "9600,N,8,1";

obj->RThreshold = 1;

obj->SThreshold = 0;

obj->InBufferCount = 0;

obj->InputLen = 0;

obj->PortOpen = 1;

}





__object_delete(obj);

__object_delete(pic);

__object_delete(pdl);

}

MSComm控件OnComm对象事件:

#include "apdefap.h"

void onComm(char* lpszPictureName, char* lpszObjectName )

{

#define GetObject GetObject

__object *pdl=NULL;

__object *pic=NULL;

__object *obj=NULL;

char *data="";

pdl = __object_create("PDLRuntime");

if(pdl)

{

printf("portopen get pdl ok ");

}

pic=pdl->GetPicture("串口通讯C版");

if(pic)

{

printf("portopen get pic ok ");

}

obj=pic->GetObject("COM");

if(obj)

{

printf("portopen get obj ok ");

}

SetTagChar("BufferTemp",obj->Input);

printf("BufferTemp:%s ",GetTagChar("BufferTemp"));





if(strcmp(GetTagChar("BufferTemp"),""))

{

SetTagChar("Buffer1",GetTagChar("BufferTemp"));

}

__object_delete(obj);

__object_delete(pic);

__object_delete(pdl);

}

“SEND按钮”鼠标左键按下事件:

#include "apdefap.h"

void onLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)

{

#define GetObject GetObject

__object *pdl=NULL;

__object *pic=NULL;

__object *obj=NULL;

char *data="";

pdl = __object_create("PDLRuntime");

if(pdl)

{

printf("portopen get pdl ok ");

}

pic=pdl->GetPicture("串口通讯C版");

if(pic)

{

printf("portopen get pic ok ");

}

obj=pic->GetObject("COM");

if(obj)

{

printf("portopen get obj ok ");

}

if(strcmp(GetTagChar("Buffer1"),""))

{

obj->Output=GetTagChar("Buffer1");

}

__object_delete(obj);

__object_delete(pic);

__object_delete(pdl);

}

MSComm控件.rar

水电之家为您提供最全面的管材,管件,水电,电线,电工,管材水电品牌的装修知识点和各种管材水电的导购与在线购买服务,拥有最便宜的管材水电价格和最优质的售后服务,每天都有秒杀的抢购活动哦!敬请登陆水电之家:http://shuidian.jc68.com/
更多»您可能感兴趣的文章:
更多»有关 管材 的产品:
  • 水电电工资讯
  • 发表评论 | 0评
  • 评论登陆
  • 移动社区 天花之家 木门之家 灯具之家 铁艺之家 幕墙之家 五金头条 楼梯头条 墙纸头条 壁纸头条 玻璃头条 老姚之家 灯饰之家 电气之家 全景头条 照明之家 防水之家 防盗之家 区快洞察 建材 枣庄建材 临沂建材 南昌建材 上饶建材 抚州建材 宜春建材 吉安建材 赣州建材 鹰潭建材 新余建材 九江建材 萍乡建材 景德镇陶瓷 石家庄建材 衡水建材 廊坊建材 沧州建材 承德建材 建材之家 企业之家 720全景
    (c)2015-2017 Bybc.cn SYSTEM All Rights Reserved