完善modbus

This commit is contained in:
zcy 2023-03-26 00:32:27 +08:00
parent 663ec6f433
commit 3ef7dd2fb5
9 changed files with 59 additions and 146 deletions

View File

@ -34,7 +34,7 @@
<ConfigurationType>StaticLibrary</ConfigurationType>
<UseOfMfc>false</UseOfMfc>
<CharacterSet>Unicode</CharacterSet>
<PlatformToolset>v120_xp</PlatformToolset>
<PlatformToolset>v142</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>StaticLibrary</ConfigurationType>

View File

@ -1,30 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Window size="1280,1024" sizebox="2,2,2,2" caption="0,0,0,35" mininfo="800,600">
<VBox bkcolor="bk_wnd_darkcolor">
<!-- 标题栏 -->
<HBox width="stretch" height="40" bkcolor="bk_wnd_lightcolor">
<Control margin="60,0,0,0" />
<Label name="title" text="协议调试器" align="left" height="40" font="title"/>
<Control />
<Button class="btn_wnd_min" name="minbtn" margin="4,6,0,0"/>
<Box width="30" margin="4,6,0,0">
<Button class="btn_wnd_max" name="maxbtn"/>
<Button class="btn_wnd_restore" name="restorebtn" visible="false"/>
</Box>
<Button class="btn_wnd_close" name="closebtn" margin="4,6,8,0"/>
</HBox>
<!-- 侧边栏 -->
<HBox>
<Box width="150" height="stretch">
<VBox valign="top" halign="left" width="150" height="stretch" >
<Button class="btn_global_blue_80x30" width="100" name="add_new" margin="25,3,5,3" />
<TreeView class="list" name="tree" height="stretch" padding="0,3,5,3">
</TreeView>
</VBox>
</Box>
<!-- 主界面 -->
<TabBox name="tab_side" width="stretch" height="stretch">
</TabBox>
</HBox>
</VBox>
</Window>

View File

@ -1,52 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Window size="250,300" caption="0,0,0,35">
<VBox bkcolor="bk_wnd_darkcolor">
<!-- 标题栏 -->
<HBox width="stretch" height="35" bkcolor="bk_wnd_lightcolor">
<Label name="title" text="新建监听项" valign="center" margin="60,15,0,0" align="left" width="stretch" height="35" font="arial_14"/>
</HBox>
<HBox width="stretch" height="35" margin="10,10,10,10">
<Label name="title" text="类型:" valign="bottom" margin="30,0,0,0" width="70" height="30" font="arial_14"/>
<Combo class="list" name="combo_type" height="30" width="130" bkimage="file='../public/combo/normal.png' corner='5,5,30,5'"/>
<Control width="stretch"/>
</HBox>
<VBox bkcolor="bk_wnd_darkcolor" height="100" visible="false" name="uart_config">
<HBox width="stretch" height="35" margin="10,10,10,10">
<Label name="title" text="串口:" valign="bottom" margin="30,0,0,0" width="70" height="30" font="arial_14"/>
<Combo class="list" name="uart_type" height="30" width="110" bkimage="file='../public/combo/normal.png' corner='5,5,30,5'"/>
<Control width="stretch"/>
</HBox>
<HBox width="stretch" height="35" margin="10,10,10,10">
<Label name="title" text="波特率:" valign="bottom" margin="30,0,0,0" width="70" height="30" font="arial_14"/>
<Combo class="list" name="uart_baurate_select" height="30" width="110" bkimage="file='../public/combo/normal.png' corner='5,5,30,5'"/>
<Control width="stretch"/>
</HBox>
</VBox>
<VBox bkcolor="bk_wnd_darkcolor" height="100" visible="false" name="modbus_config_master">
<HBox width="stretch" height="35" margin="10,10,10,10">
<Label name="title" text="串口:" valign="bottom" margin="30,0,0,0" width="70" height="30" font="arial_14"/>
<Combo class="list" name="uart_type" height="30" width="110" bkimage="file='../public/combo/normal.png' corner='5,5,30,5'"/>
<Control width="stretch"/>
</HBox>
<HBox width="stretch" height="35" margin="10,10,10,10">
<Label name="title" text="波特率:" valign="bottom" margin="30,0,0,0" width="70" height="30" font="arial_14"/>
<Combo class="list" name="uart_baurate_select" height="30" width="110" bkimage="file='../public/combo/normal.png' corner='5,5,30,5'"/>
<Control width="stretch"/>
</HBox>
</VBox>
<VBox bkcolor="bk_wnd_darkcolor" height="90" visible="false" name="ip_config">
<HBox width="stretch" height="35" margin="10,0,0,0">
<Label name="title" text="ip: " valign="bottom" margin="30,0,0,0" width="70" height="30" font="arial_14"/>
<RichEdit class="simple input" width="90" name="ip_edit" height="30" margin="0,3" padding="6,6,6" />
<Control width="stretch"/>
</HBox>
<HBox width="stretch" height="35" margin="10,0,0,0">
<Label name="title_port" text="端口:" valign="bottom" margin="30,0,0,0" width="70" height="30" font="arial_14"/>
<RichEdit class="simple input" width="90" name="port_input" height="30" margin="0,3" padding="6,6,6" />
<Control width="stretch"/>
</HBox>
</VBox>
<Button class="btn_global_blue_80x30" name="open_button" width="100" margin="80,3,5,3" text="打开" />
<Button class="btn_global_blue_80x30" name="exit_button" width="100" margin="80,3,5,3" text="退出" />
</VBox>
</Window>

View File

@ -1,33 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ChildBox name="uart_form" width="stretch" height="stretch">
<VBox width="stretch" height="stretch">
<Label name="uart_info_label" text="当前串口: COM" margin="0,10,0,0" height="25" />
<HBox height="25" >
<Label text="数据接收:" margin="0,10,0,0" height="25" width="stretch"/>
<Label text="lua脚本:" margin="0,10,0,0" height="25" width="stretch"/>
</HBox>
<HBox>
<RichEdit class="simple input" width="stretch" name="uart_recv_eidt" height="stretch" margin="5,5,5,5" padding="6,6,6"
multiline="true" vscrollbar="true" hscrollbar="true" autovscroll="true" normaltextcolor="darkcolor" wantreturnmsg="true" rich="true" />
<RichEdit class="simple input" width="stretch"
name="lua_script" height="stretch"
margin="5,5,5,5" padding="6,6,6"
multiline="true" vscrollbar="true"
hscrollbar="true" autovscroll="true" normaltextcolor="darkcolor" wantreturnmsg="true" rich="true" />
</HBox>
<Label text="发送数据" height="25" />
<RichEdit class="simple input" width="stretch" name="uart_send_edit" height="30" margin="5,5,5,5" padding="6,6,6" />
<HBox height="40">
<Button class="btn_global_blue_80x30" name="btn_save_lua" width="100" text="保存lua脚本" bkcolor="lightcolor" margin="25,3,5,3" />
<Button class="btn_global_blue_80x30" name="btn_send_data" width="100" text="发送" bkcolor="lightcolor" margin="25,3,5,3" />
<CheckBox class="checkbox_font12" name="check_new_line" text="发送新行" margin="10,12,0,0" selected="true"/>
<CheckBox class="checkbox_font12" name="check_time_send" text="定时发送" margin="10,12,0,0" selected="true"/>
<CheckBox class="checkbox_font12" name="check_hex_send" text="hex显示" margin="10,12,0,0" selected="true"/>
<CheckBox class="checkbox_font12" name="check_hex_recv" text="hex接受" margin="10,12,0,0" selected="true"/>
<Button class="btn_global_blue_80x30" name="btn_close_uart" width="100" text="关闭" bkcolor="lightcolor" margin="25,3,5,3" />
</HBox>
</VBox>
</ChildBox>

View File

@ -1,5 +1,6 @@
#include "stdafx.h"
#include "cef_form.h"
#include <iostream>
const std::wstring CefForm::kClassName = L"CEF_Control_Example";
@ -135,4 +136,8 @@ void CefForm::OnLoadEnd(int httpStatusCode)
nim_comp::Toast::ShowToast(nbase::UTF8ToUTF16(params), 3000, GetHWND());
callback(false, R"({ "message": "Success." })");
}));
cef_control_->AttachUrlChange([this](const std::wstring& url) {
std::cout << "goto url";
return;
});
}

View File

@ -573,6 +573,10 @@ LRESULT BasicForm::HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
if (ui::EventType::kEventSelect == ev->Type) {
wprintf(L"%s\r\n", dynamic_cast<ui::TreeNode*> (ev->pSender)->GetText().c_str());
printf("GetCurSel %d\r\n", mRightSide->GetCurSel());
/*if (mRightSide->GetCurSel() < 0) {
return false;
}*/
ModbusMasterForm* p = mModbusMasterForm[dynamic_cast<ui::TreeNode*> (ev->pSender)->GetText()];
if (p != nullptr) {
p->SetAutoDestroy(true);
@ -589,7 +593,7 @@ LRESULT BasicForm::HandleMessage(UINT uMsg, WPARAM wParam, LPARAM lParam)
}
}
}
return true;
return true;
});
}
return WindowImplBase::HandleMessage(uMsg, wParam, lParam);

View File

@ -1,13 +1,17 @@
#include "modbus_form.h"
#include "lua_bind.h"
#include "msgdef.h"
#include <item.h>
ModbusMasterForm::ModbusMasterForm(ui::Window* hwnd, std::wstring name,
uint32_t baurate, UINT portnum,
uint8_t data_bits, uint8_t stop_bits,
uint8_t verify, uint8_t flow_control) {
uint8_t verify, uint8_t flow_control)
:m_rich_edit_1(nullptr),
m_rich_edit_2(nullptr),
m_rich_edit_3(nullptr)
{
m_portnum = portnum;
m_name = name;
@ -34,30 +38,6 @@ ModbusMasterForm::ModbusMasterForm(ui::Window* hwnd, std::wstring name,
std::cout << "lua script is " << lua_script << std::endl;
/*
m_thread_recv = new std::thread([this]() {
UINT PortNum = 0;
for (int i = 3; m_name[i] != '\0'; i++)
{
PortNum = PortNum * 10 + (m_name[i] - '0');
}
char recv[1024] = { 0 };
while (this->m_runing) {
if (0 < SerialPort::ReadPort(PortNum, recv, 1024)) {
printf("recv data: %s", recv);
this->m_show_recv += string2wstring(recv);
this->mLua->CallFuntion<std::string>("OnUartData", std::string(recv));
if (this->mEditRecv != nullptr) {
this->mEditRecv->AppendText(string2wstring(recv), false);
::PostMessage(this->GetWindow()->GetHWND(), WM_ADD_UART_RECVDATA, 0, 0);
}
}
else {
Sleep(100);
}
}
});
*/
if (nullptr != hwnd) {
// set window so we get getwindow by GetWindow funtion
this->SetWindow(hwnd, nullptr, false);
@ -106,20 +86,59 @@ void ModbusMasterForm::Init() {
ptr->tv_usec = 0;
modbus_set_response_timeout(mModbus, ptr);
uint16_t dest[32];
ret = modbus_read_registers(mModbus, 0x31, 1, dest);
if (m_rich_edit_1) {
}
uint16_t addr = 0;
if (m_rich_edit_1) {
int i = 0;
nbase::StringToInt(m_rich_edit_1->GetText(),&i);
addr = uint16_t(i);
}
ret = modbus_read_registers(mModbus, addr, 1, dest);
if (ret < 0) {
printf("read %d timeout %d ", ret);
}else {
for (int i = 0; i < ret; i++) {
ui::ListContainerElement* element = new ui::ListContainerElement;
element->SetText(nbase::StringPrintf(L"µØÖ·%d: %d", addr + i,dest[i]));
element->SetClass(L"listitem");
element->SetFixedHeight(30);
element->SetFont(L"system_20");
m_list->RemoveAll();
m_list->Add(element);
}
}
std::string str;
modbus_flush(mModbus);
modbus_close(mModbus);
}
return false;
});
}
m_list = dynamic_cast<ui::ListBox*>(FindSubControl(L"list"));
/*
ui::ListBox* list = dynamic_cast<ui::ListBox*>(FindSubControl(L"list"));
if (list != nullptr) {
for (auto i = 0; i < 30; i++)
{
std::cout << "123";
ui::ListContainerElement* element = new ui::ListContainerElement;
element->SetText(nbase::StringPrintf(L"ListElement %d", i));
element->SetClass(L"listitem");
element->SetFixedHeight(20);
list->Add(element);
}
}
/*
mEditSend = dynamic_cast<ui::RichEdit*>(FindSubControl(L"uart_send_edit"));
mEditLua->SetReturnMsgWantCtrl(true);

View File

@ -56,6 +56,7 @@ public:
ui::Button* m_button_1;
ui::RichEdit* m_rich_edit_2;
ui::RichEdit* m_rich_edit_3;
ui::ListBox* m_list;
HWND m_hwnd;
LuaDelegate* mLua;

View File

@ -274,7 +274,6 @@ void NewMonitorForm::InitWindow()
}
this->Close();
return true;
}
if (m_combo_type->GetText() == L"modbus salve") {
UINT PortNum = 0;