哪位有MODBUS的DLL的源码,急求一份,谢谢!!
See the following, hope to help.
// 档名: RS232_x.C--
// 缘由:为了VIGOR PLC modbus与PC图控软体的RS232连线
// 使用说明:
//
/*
01: Read coil status
02: Read input status
03: Read holding register
04: Read input registers
05: Force single coil
06: Preset single register
15: Force multiple coils
16: Preset multiple registers
22: Mask write register
23: Read/Write registers
*/
#pragma option w32
#include "msvcrt.h--"
#include "windows.h--"
#include "wingdi.h--"
//2006/10/19 HK
#include "winbase.h--"
#include "winerror.h--"
#include "advapi.h--"
#include "winuser.h--"
#define NUM 50
#define NUM_1 NUM+1
#define PI 3.@@4
#define ID_TIMER 1
byte Text="欢迎您 RS232 MODBUS测试程式 2006/10/19 ";
// 还是取好记一点的名字较好,避免用 a、b、c 来取名
WNDCLASS wc;
//WNDCLASSEX wc;
HWND hwnd;
DCB dcb; //2006/9/29 HK
// 用小写 p 开头的变数多半是指标功能。
//站号为1,Y0设为ON
byte spd[8]={1,5,0,0,255,0,140,58}; //1,5,0,0,ff,0,8c,3a
//站号为1,Y0设为OFF
byte spdx[8]={1,5,0,0,0,0,205,202}; //1,5,0,0,0,0,cd,ca
byte abcd[8];
MSG msg;
HDC hdc;
HMENU hMenu ;
HANDLE hFile;
void main()
{
/*
wc.cbSize=sizeof(WNDCLASSEX);//无此行用RegisterClassEx会看不到视窗
*/
wc.hInstance = hThisInst;
wc.lpszClassName = "Hi" ;
wc.lpfnWndProc = #WndProc ;
wc.style = CS_HREDRAW | CS_VREDRAW ;
wc.hbrBackground = GetStockObject(WHITE_BRUSH);
wc.hCursor = LoadCursor(0,IDC_CROSS);
RegisterClass(#wc);
hwnd=CreateWindowEx(0,"Hi",#Text,WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
0,0,hThisInst,0) ;
SetTimer (hwnd, ID_TIMER, 1000, NULL);
hFile=CreateFile("Com4",
GENERIC_READ|GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
0);
if ( hFile == INVALID_HANDLE_VALUE ) //判断COM开启是否成功
{
MessageBox(0,"开启通讯埠 错误!!","Comm Error",MB_OK);
return;
}
//将dcb位址传入,以开启通序参数
GetCommState(hFile ,#dcb ); //得知目前COM的状态
dcb.BaudRate = 19200; //设定鲍率19200
dcb.ByteSize = 8; // 8 bits位元组
dcb.Parity = NOPARITY; //同位元检查为none
dcb.StopBits = ONESTOPBIT; //Stop bit =1
//设定通讯埠
if( !SetCommState(hFile,#dcb) )
{
MessageBox(0,"通序埠设定错误!!!","Set Error",MB_OK);
CloseHandle(hFile);
return;
}
ShowWindow(hwnd,1);
while (GetMessage(#msg,0,0,0))
DispatchMessage(#msg);
}
POINT pt[50];
long WndProc(HWND hwnd, UINT msg,WPARAM wparam, LPARAM lparam) // 视窗函式
{
static int cxClient, cyClient ;
static POINT pt [NUM_1] ;
static BOOL fFlipFlop = FALSE ;
HBRUSH hBrush ;
int i;
float f;
PAINTSTRUCT ps ;
RECT rect ;
switch (msg)
{
case WM_TIMER :
!fFlipFlop ;
InvalidateRect (hwnd, NULL, FALSE) ;
if(fFlipFlop)
WriteFile(hFile,#spd,8,#abcd,NULL);
else
WriteFile(hFile,#spdx,8,#abcd,NULL);
return 0 ;
case WM_SIZE :
cxClient = LOWORD (lparam) ;
cyClient = HIWORD (lparam) ;
break;
case WM_PAINT :
hdc = BeginPaint (hwnd, #ps) ;
GetClientRect (hwnd, #rect) ;
if(fFlipFlop)
{
hBrush = CreateSolidBrush ( RGB(255,0,0) ) ;
FillRect (hdc,#rect, hBrush) ;
DrawText (hdc, "站号为1,Y0设为ON", 16, #rect,
DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;
}
else
{
hBrush = CreateSolidBrush ( RGB(0,255,0) ) ;
FillRect (hdc,#rect, hBrush) ;
DrawText (hdc, "站号为1,Y0设为OFF", 17, #rect,
DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;
}
MoveToEx (hdc, 0, cyClient / 2, NULL) ;
LineTo(hdc, cxClient, cyClient / 2) ;
for (i = 0 ; i <= NUM ; i++)
{
pt[i].x = i * cxClient /NUM;
f = sin(PI * 2 / NUM * i);
pt[i].y = float 1-f * cyClient/2 ;
}
Polyline (hdc, #pt,NUM_1) ;
EndPaint (hwnd, #ps) ; // 这行原本有错喔!改了变数名字就看出来了
DeleteObject (hBrush) ;
break;
case WM_DESTROY :
KillTimer (hwnd, ID_TIMER) ;
PostQuitMessage(0);
break;
}
return DefWindowProc(hwnd,msg,wparam,lparam);
}
// 档名: RS232_x.C--
// 缘由:为了VIGOR PLC modbus与PC图控软体的RS232连线
// 使用说明:
//
/*
01: Read coil status
02: Read input status
03: Read holding register
04: Read input registers
05: Force single coil
06: Preset single register
15: Force multiple coils
16: Preset multiple registers
22: Mask write register
23: Read/Write registers
*/
#pragma option w32
#include "msvcrt.h--"
#include "windows.h--"
#include "wingdi.h--"
//2006/10/19 HK
#include "winbase.h--"
#include "winerror.h--"
#include "advapi.h--"
#include "winuser.h--"
#define NUM 50
#define NUM_1 NUM+1
#define PI 3.@@4
#define ID_TIMER 1
byte Text="欢迎您 RS232 MODBUS测试程式 2006/10/19 ";
// 还是取好记一点的名字较好,避免用 a、b、c 来取名
WNDCLASS wc;
//WNDCLASSEX wc;
HWND hwnd;
DCB dcb; //2006/9/29 HK
// 用小写 p 开头的变数多半是指标功能。
//站号为1,Y0设为ON
byte spd[8]={1,5,0,0,255,0,140,58}; //1,5,0,0,ff,0,8c,3a
//站号为1,Y0设为OFF
byte spdx[8]={1,5,0,0,0,0,205,202}; //1,5,0,0,0,0,cd,ca
byte abcd[8];
MSG msg;
HDC hdc;
HMENU hMenu ;
HANDLE hFile;
void main()
{
/*
wc.cbSize=sizeof(WNDCLASSEX);//无此行用RegisterClassEx会看不到视窗
*/
wc.hInstance = hThisInst;
wc.lpszClassName = "Hi" ;
wc.lpfnWndProc = #WndProc ;
wc.style = CS_HREDRAW | CS_VREDRAW ;
wc.hbrBackground = GetStockObject(WHITE_BRUSH);
wc.hCursor = LoadCursor(0,IDC_CROSS);
RegisterClass(#wc);
hwnd=CreateWindowEx(0,"Hi",#Text,WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
0,0,hThisInst,0) ;
SetTimer (hwnd, ID_TIMER, 1000, NULL);
hFile=CreateFile("Com4",
GENERIC_READ|GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
0);
if ( hFile == INVALID_HANDLE_VALUE ) //判断COM开启是否成功
{
MessageBox(0,"开启通讯埠 错误!!","Comm Error",MB_OK);
return;
}
//将dcb位址传入,以开启通序参数
GetCommState(hFile ,#dcb ); //得知目前COM的状态
dcb.BaudRate = 19200; //设定鲍率19200
dcb.ByteSize = 8; // 8 bits位元组
dcb.Parity = NOPARITY; //同位元检查为none
dcb.StopBits = ONESTOPBIT; //Stop bit =1
//设定通讯埠
if( !SetCommState(hFile,#dcb) )
{
MessageBox(0,"通序埠设定错误!!!","Set Error",MB_OK);
CloseHandle(hFile);
return;
}
ShowWindow(hwnd,1);
while (GetMessage(#msg,0,0,0))
DispatchMessage(#msg);
}
POINT pt[50];
long WndProc(HWND hwnd, UINT msg,WPARAM wparam, LPARAM lparam) // 视窗函式
{
static int cxClient, cyClient ;
static POINT pt [NUM_1] ;
static BOOL fFlipFlop = FALSE ;
HBRUSH hBrush ;
int i;
float f;
PAINTSTRUCT ps ;
RECT rect ;
switch (msg)
{
case WM_TIMER :
!fFlipFlop ;
InvalidateRect (hwnd, NULL, FALSE) ;
if(fFlipFlop)
WriteFile(hFile,#spd,8,#abcd,NULL);
else
WriteFile(hFile,#spdx,8,#abcd,NULL);
return 0 ;
case WM_SIZE :
cxClient = LOWORD (lparam) ;
cyClient = HIWORD (lparam) ;
break;
case WM_PAINT :
hdc = BeginPaint (hwnd, #ps) ;
GetClientRect (hwnd, #rect) ;
if(fFlipFlop)
{
hBrush = CreateSolidBrush ( RGB(255,0,0) ) ;
FillRect (hdc,#rect, hBrush) ;
DrawText (hdc, "站号为1,Y0设为ON", 16, #rect,
DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;
}
else
{
hBrush = CreateSolidBrush ( RGB(0,255,0) ) ;
FillRect (hdc,#rect, hBrush) ;
DrawText (hdc, "站号为1,Y0设为OFF", 17, #rect,
DT_SINGLELINE | DT_CENTER | DT_VCENTER) ;
}
MoveToEx (hdc, 0, cyClient / 2, NULL) ;
LineTo(hdc, cxClient, cyClient / 2) ;
for (i = 0 ; i <= NUM ; i++)
{
pt[i].x = i * cxClient /NUM;
f = sin(PI * 2 / NUM * i);
pt[i].y = float 1-f * cyClient/2 ;
}
Polyline (hdc, #pt,NUM_1) ;
EndPaint (hwnd, #ps) ; // 这行原本有错喔!改了变数名字就看出来了
DeleteObject (hBrush) ;
break;
case WM_DESTROY :
KillTimer (hwnd, ID_TIMER) ;
PostQuitMessage(0);
break;
}
return DefWindowProc(hwnd,msg,wparam,lparam);
}
佚名
2024-05-24 00:47:51
类似问题(10)
-
佚名2024-05-24 07:47:12
问哪位能帮我查一下的身份证号码和姓名啊,谢谢,不胜感激,是河南濮阳的号。
答告诉你一个简单的办法,去人工的营业厅交10元话费,无意中问她账户的名字,简单得很
-
佚名2024-05-24 06:55:48
问求企业网站源代码一份
答到我的网站:http:///点击智能建站,进入里面先注册一个号,里面有自助建站的各种模板任你选择,做好了,找我给你免费提取,有些部分要手工修改的。QQ56144...
-
佚名2024-05-24 17:13:07
问求助DZ论坛发帖版块这样的源码哪里有叫什么名字拜托了各位 谢谢
答直接问他就行 了 你来这里问是得不到答案的 查看原帖>>
-
佚名2024-05-24 08:00:00
问非软件企业,在单位开发的源代码公司有权备份源码。
答是工作任务还是你利用闲暇时间开发的,如果是公司工作内容就没办法的。
-
佚名2024-05-24 08:00:00
问哪位朋友有周易起名v8.0的注册码,谢谢了...急呀~~ onmywaylc@qq.com
答我也想要一个注册码,谁好心啊,给我一个我的邮箱sunchaosunchaook@163.com
-
佚名2024-05-24 08:00:00
问“(急)”请问各位“杨成喆”的数字代码是什么谢谢
答杨 --> 2799成 --> 2052喆 --> 0811见http://www.imm-diy.net/htm/code/
-
佚名2024-05-24 08:00:00
问急求数码大师的注册码,用户名,还有确认码,谢谢大家了
答这个没有哟,你可以去下载会声会影,做电子相册,很简单,采纳哟,亲
-
佚名2024-05-24 08:00:00
-
佚名2024-05-24 08:00:00
问急求法莱利尔大码女装哪有批发的,大家有知道的帮我回一下,谢谢了
答广州白马有。沙河这里也有。我就在这边。你可以找我啊
-
佚名2024-05-24 08:00:00
问求multisim12.0激活代码,,急需,谢谢
答G57T66634序列号
风水
起名
- 1 **推拿理疗店,帮忙起名!
- 2 胖胖的猫有哪几个品种,名字,最好带上图片。谢谢
- 3 求达人取名字。免姓戴,族谱是“庄”男孩、女孩的名字。或者不要辈分。。谢谢一经采用还追加分数。
- 4 帮我查下用阮字姓取个名字,男孩,2015.10.21出生
- 5 张艺媛女孩名字好听吗
- 6 请问哪有,三国志10新武将的姓名,很是多谢
- 7 2014年1月10日早上5点35分是什么时辰命里缺什么!鄙人姓张,求哪位大神给取个名字。本人跪谢!
- 8 1993年7月5日15点25分(阳历)出生的男孩五行属什么?缺什么?起名用什么字好?
- 9 这个动漫男生是哪个动漫的叫什么名字
- 10 魔兽世界 想玩个 亡灵术士 帮忙想个好听点的名字 不要搞笑的
网名
- 1 五个字的淘宝网名大全
- 2 伤心女网名四个字大全
- 3 优雅的网名两个字女的
- 4 伤心微信网名女生2017
- 5 熊猫麻将怎么改昵称
- 6 起个酷狗唱歌的昵称
- 7 qq邮箱怎么给别人的帐户设置昵称
- 8 qq古风男生昵称
- 9 二次元喵喵家族昵称
- 10 微信群组昵称更改
说说
- 1 关于扎马尾的个性签名
- 2 微信社会女个性签名
- 3 超拽签名男生霸气冷酷6
- 4 讽刺经典说说
- 5 关于暗斗的空间说说
- 6 说说不写作业的同学
- 7 爱情保证书的说说
- 8 结合文章内容说说郭浩是 怎样的人
- 9 关于老公的搞笑说说
- 10 你没有挽留的伤感说说心情