From e7128f0b69eae6a0ca97284487ee27e8ab7b0d01 Mon Sep 17 00:00:00 2001 From: Jens Geudens Date: Fri, 19 Dec 2025 22:02:27 +0100 Subject: [PATCH 1/6] Disable sequence diagram --- .coderabbit.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.coderabbit.yaml b/.coderabbit.yaml index 49d494c..c02ae28 100644 --- a/.coderabbit.yaml +++ b/.coderabbit.yaml @@ -9,6 +9,7 @@ reviews: review_status: true collapse_walkthrough: false changed_files_summary: false + sequence_diagrams: false estimate_code_review_effort: false auto_review: enabled: true From 711066178ba065845e55d7d11b176eab4bd7f3d3 Mon Sep 17 00:00:00 2001 From: Jens Geudens Date: Fri, 19 Dec 2025 22:04:24 +0100 Subject: [PATCH 2/6] Resize table widget --- src/mainwindow.cpp | 10 ++++------ src/mainwindow.ui | 12 ++++++------ 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 912ba0a..ca43601 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -2,13 +2,11 @@ #include "ui_mainwindow.h" +#include #include #include -#include -MainWindow::MainWindow(QWidget *parent) : - QMainWindow(parent), - _pUi(new Ui::MainWindow) +MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent), _pUi(new Ui::MainWindow) { _pUi->setupUi(this); @@ -65,10 +63,10 @@ MainWindow::MainWindow(QWidget *parent) : /** Setup registerView **/ _pUi->tblRegData->setModel(_pRegisterDataModel); _pUi->tblRegData->verticalHeader()->show(); - _pUi->tblRegData->horizontalHeader()->show(); // Not sure yet (show or not to show?) + _pUi->tblRegData->horizontalHeader()->show(); /* Don't stretch columns, resize to contents */ - _pUi->tblRegData->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents); + _pUi->tblRegData->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); QList registerList = QList() << 0 << 1 << 2 << 3 << 4; _pSlaveData->setRegisterState(registerList, true); diff --git a/src/mainwindow.ui b/src/mainwindow.ui index a4bb9c1..9be831c 100644 --- a/src/mainwindow.ui +++ b/src/mainwindow.ui @@ -6,7 +6,7 @@ 0 0 - 700 + 1021 628 @@ -28,7 +28,7 @@ - Qt::LeftToRight + Qt::LayoutDirection::LeftToRight Once @@ -97,7 +97,7 @@ - Qt::Horizontal + Qt::Orientation::Horizontal @@ -125,7 +125,7 @@ - Qt::Vertical + Qt::Orientation::Vertical @@ -185,7 +185,7 @@ - Qt::Horizontal + Qt::Orientation::Horizontal @@ -231,7 +231,7 @@ - Qt::Horizontal + Qt::Orientation::Horizontal From 13bccf079c4d2c2a30aecd881e8b9f9dc195d0d3 Mon Sep 17 00:00:00 2001 From: Jens Geudens Date: Fri, 19 Dec 2025 22:17:17 +0100 Subject: [PATCH 3/6] Rename to ModbusSim --- ModbusSim.png | Bin 0 -> 61293 bytes ModbusTestSlave.png | Bin 31981 -> 0 bytes README.md | 11 +++++----- misc/icon/Icons8_flat_sim_card.svg | 33 ++++++++++++++++------------- misc/icon/icon-256x256.png | Bin 0 -> 5889 bytes misc/icon/icon-64x64.png | Bin 1429 -> 0 bytes src/mainwindow.cpp | 2 +- 7 files changed, 25 insertions(+), 21 deletions(-) create mode 100644 ModbusSim.png delete mode 100644 ModbusTestSlave.png create mode 100644 misc/icon/icon-256x256.png delete mode 100644 misc/icon/icon-64x64.png diff --git a/ModbusSim.png b/ModbusSim.png new file mode 100644 index 0000000000000000000000000000000000000000..2c9381c5a1b11f486d1926519f32d2d676b23ab1 GIT binary patch literal 61293 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

#T#us`U8sY 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 P_!V-}N>{U_^u7NNi?Oju literal 0 HcmV?d00001 diff --git a/ModbusTestSlave.png b/ModbusTestSlave.png deleted file mode 100644 index bb472ab7b96b63067073b7d558a91a5f5bd0478e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31981 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 Z4^Fo9E|sOa9Wyl4CTe*v -# What is ModbusTestSlave -ModbusTestSlave is an application that can be used to test a modbus master. The application consists of 2 main set of modules. A GUI-less part that contains all logic that can also be used in automated tests. The second part is a GUI that can be used for manual testing. +Build status: [![Build](https://github.com/ModbusScope/ModbusSim/actions/workflows/ccpp.yml/badge.svg?branch=master)](https://github.com/ModbusScope/ModbusSim/actions/workflows/ccpp.yml) -![ModbusTestSlave demo](ModbusTestSlave.png) +# What is ModbusSim +ModbusSim is an application that can be used to test a modbus master. The application consists of 2 main set of modules. A GUI-less part that contains all logic that can also be used in automated tests. The second part is a GUI that can be used for manual testing. + +![ModbusSim demo](ModbusSim.png) diff --git a/misc/icon/Icons8_flat_sim_card.svg b/misc/icon/Icons8_flat_sim_card.svg index 8859250..332c658 100644 --- a/misc/icon/Icons8_flat_sim_card.svg +++ b/misc/icon/Icons8_flat_sim_card.svg @@ -5,8 +5,8 @@ enable-background="new 0 0 48 48" id="svg8" sodipodi:docname="Icons8_flat_sim_card.svg" - inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20)" - inkscape:export-filename="/home/jens/Projects/ModbusTestSlave/ModbusTestSlave.git/misc/icon/icon-256x256.png" + inkscape:version="1.4.2 (ebf0e940d0, 2025-05-08)" + inkscape:export-filename="icon-256x256.png" inkscape:export-xdpi="512" inkscape:export-ydpi="512" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" @@ -38,18 +38,20 @@ guidetolerance="10" inkscape:pageopacity="0" inkscape:pageshadow="2" - inkscape:window-width="1852" - inkscape:window-height="1016" + inkscape:window-width="1854" + inkscape:window-height="1011" id="namedview10" showgrid="false" inkscape:zoom="12.698459" inkscape:cx="35.004247" - inkscape:cy="18.860556" - inkscape:window-x="68" - inkscape:window-y="27" + inkscape:cy="18.821181" + inkscape:window-x="0" + inkscape:window-y="0" inkscape:window-maximized="1" inkscape:current-layer="svg8" - inkscape:pagecheckerboard="0" /> + inkscape:pagecheckerboard="0" + inkscape:showpageshadow="2" + inkscape:deskcolor="#d1d1d1" /> Modbus + x="10.867574" + y="15.368117" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.77647px;font-family:Mallanna;-inkscape-font-specification:Mallanna;stroke-width:0.847058">Modbus diff --git a/misc/icon/icon-256x256.png b/misc/icon/icon-256x256.png new file mode 100644 index 0000000000000000000000000000000000000000..c7214928d1326587643bdb042d9a3548f96c2576 GIT binary patch literal 5889 zcmb_gXH-*Nm%b_V06{uP7b!~bB@mjRNH5YsiWF&LLKR2^L_mttlrCMWfCwfCQ9)3o z384tQRHcNDR4J2p=FhjLto6>U`El1d=Q(%pefPfml>H=_8tc>3a?t_+K!4pp*Bk&q zcNJxmJxBuPy zZnpzHBm;sxb2rqv0Dvv!x~`UGXx{pCSOyF6J=NCc`pSgMo$(gVeXJIX`%^trY1a#% zEEW=fA(%gHBbcPQQWJ{`LX;QVs3lc27%3Ajt8BlLNu=Y-sAOV?!&%|B?lV*zlLD_VZ5Rh&uBLvgq0s{nN zWPr!8&j7zH$3F*-(Clfjc`3R^({vRka|Z_O9JLEIG#uywrPblvS*)pwE+A`kCZeVfkh!vM4ge={m*XsP<-L3VN6DSAu3_CKO8Y;xvFhC2^<(49g@f_)8?!e<2 zsf(%dGXVnk;x_C=*|t?4B;Q}mXRIA|Oh_;n2Ri2|!nQm$K|Sa5hmR_tzzOe!0^`?} z-Mc7uw`UnNK*M6fQ#f`EfQ>rRb*&pdenk5DO+RH-vXe!O32xKL@d%qXUD zhx$!k3mAA_j0b$=IKVWsF90|l+acgkif8b#P`*5b3^IVI zl??Qv3t%elM%_sOiY&X~j~{}NmtClJ2>`!^H1wkjkanE|+$Rn6$iqO~l)#I}0)w$2 zWVtIf84COy4?r+CJyGPrV;BR75_szB{&)ZC=Q#3&Xoi`V4NcG6EiW?}g~tRpgfw3R75RhG8?#hZlW8&#S6v5B*b*e?&;1$R;O`%Fe8Vz{y|g z%teIkz`vRS4STAS_4UC`qkOQ#?!w_HJ2jAc75cT`Zf5rg^>oW~%sHFKRG4IY%yD=~{kadF=}Zx?^8=d_fyh#ZRR zcd|F9UDGV(W#oamdwjm7b6sqUsO015`PJ&mr3#+38Rph4@a#iDWa~+;sBjtKk&%x> z$;s8UEK1Y{G|#y->aUucdx(~Yj(LeU_MFxcm7|O_s2)f^H|z;7!q;f0)qvGitl1|_hs3ShuOrz_onC6VG}O#^@oaaeQm(E}`QdStp>A<@ zCj9W@XklQV2R!Nvgdc$Y-!m;Q&DJ|ofC-bEkm}LO`-j2$DX(~zr=!6gZJa&mEx8{@ z55(n1qiEXpQ^GfMCf~4zE=9WhP!RVLR0)OJw3{O~#wKlniwL&k90SnnJCLo>8?4~D zH3U#|rhTfO{u$EZz#TC;N3UIS4%uES{t`6Wwz=S#;D4uOg^L^e1g5}-Dd$*dFIZ=IW?36JG>GQ){*}8+?Am=jr04A6otiMA^4xIw7A{cMxfHe?(sEK9?7E+@-beGur&OO>+_yUAlzo@GAx{)??PGNQ!y)jxy zU06eLc3j@P`{x02DFrzL-s5#IweO__S6Ph+266B^vC*-G25ZXVDd1B_pOYJpcb$E~ z=6O<>X5Mr#K z7xe5mt@ME;QGwdCkCK>4t=d7|y24fDsYHq(|9DnDaBj=1{E_5UuGu|S@w{>eS_h4x zAJ|gp{u)(QEs(-ez0`YFm-8c%Zpu%@sTob!iMAP#;-PZb(_zJEVKF|D58mrhtai#I zjPF>Y2J#@Y4Z1Z~C)9HtXqbFIGKyL1I|0fMSd@bWk4bA4FezRhT%C=guelmsPKs$$ z6ph1C%;4pBnnuZb>e7a25TKwq_<+*QG!n7(cKwrPDf~GCfm))n4E=UUA$=#d$!;AC z+S_X)VYusQ5#h8T7%%lyNX4ofRd)2Q`%T0IaB6}K0*+mDm<&XNjzu# z@!q-F<=M;f&*4+A+=AYEe?gXPuDA!tGjRY~``AkQTp_+8rGVxX`2~GE_e;&N8+$7; zmy=UZbJ{78LrBumn0>$FS~rcTgm45zBKS~Cj$I_m$)G3QB}xi9JpE!Cmf0jP0w9a_C@r22lz>` zMO?XU@?5MpKGiNY{+hShIDO)Re6TZ>r(mq9088E5(UBHpbI%|ucuDJt@hxO8j(0qVORYr$nL;|IS>T&(-;nl}juF<%z;3x*TPG zxg0>So4#G7XM}}jPZY5z{r*^Ae(h^sJSV16%HEzzUfyP)%yNeAtM{gF{(576fM(B% zyT~8hdgSh?B6&+X@ZSqCwNls`AQDbQu$rf=$|F@0&*Tpm`)c1|b=`pRpFhD%3JNdp zl15e<`Ne8Ke0YLVSm=}ZlaljmzShKqG19;A{@@^7)oBhDSbwCNABgk+6XaiC@Ab-Q z8mrQTb)I=?97oxG6%0~{YV?xX`c_C}EvnU`tn|3v3Slv+_Mncu2W{_l zj<8iV*&LUC!g8E)0DT^%@y7ILK}}p%e~qJ#Yu%h4R19JUk50NoJ`Pkcii8d^2|npO zc%8qmwi=ii@I}nCcOsu!4&dxJn|#%u61H^Kaq8tj3e30qAv5PR{IPNLQ2*Kj3@XAFdHP z`>uDqV$y$dr6y~d$@u=Yrr{5FeSCCGtRCfxdIYfMooVb}y&<;H;bw8)O~2|M_|HCb ztr^PTtsJL;Y_zpzS+FWNSf)Jg8zyw!C6&^ijWk%{T^8;52TymjK+5XZYD zQ5fC&(e=ajhDkO41lN4eaIGQ9WX#r6?E5g5?ol58X2H7b6z+Ij|3G50b~{`5HDmGT z`-+z?7xo%T?A-=pg>;uw*wk&-e%#F{V($ivPqNaKH>X}hP`CNyo=2~=Ze@!z z^1|)L=<4;_&Ag2ywmw#GPrt9kT_bX@G)FLkHzVBpBcT+%uBO0Wl-G^b8&G10;Ks=#^F zdmKtB)MuM;d$y6rN72=~oHj4uZS{8iY|2m*ci^>Sv+I9is7qrEx^_MxQ-aztCFZMbvvDZos!8f=cE5_8cOer{w2T?D3ft+YW<^)|*4QXemDeLYV8wg(DBF_c`i;8ibq5!> zcXq9IeVapbxW?JkYLJ6!|LQZ&L=gOX{YF&)PoDC;Nz$e`F7R`TW%?5*+q&Q_W)Y&1 zqTrWJnyJW$-;AUp5TRBHkm`7)G0U1sP~(erej5M^+=R`}>DM+S+gzi!03DK7W6I&R zj4P*&O_&!gdL1i0BVyw64+T)OfyPgiIf?|9!^WFU_9jUrt3j6EmTG2go)=SiEm~NwXjTWm^>?%! zAJ?gA({9#%7}D=;e1jx!+ub(E8TBDTut3bhXuqF_XrrqhGV!Xe!N1Ymw(R4pTa3*b ze;6Xm9q6TxPv=aeioNeFekiHRBu|zLw)9$eENM`zMxrB9^~M(a$TugC+P0^$()Dy{ znJW+2oN><6J6~y{b9Oy)N#g>?h~M*OgI9tK`9(+HGsZnWkwb5Cg%6n+x_iE&v1!o# zv9f*=RrI>>xcK=v#s8`b{XZ10|4ii9m?Ki$KnGyH2T$*c`u))sr60HP?Ae``<>FMHvh4>F7M7O+m$3HD_5sAdjG5k=!5CZcnx)wxE|r-E?^T~yK)UIG(J z>@XU?W2nneke0svB=0d-)RTqJ)XBrrc?9bji_n`j@*zuOm1^Q!v7wAJ#|0lL=3_U4 z)RRE)_%E)SqsLiA@CsD6YnzsGT(c|9<=Y(_=IRNc+3&zTuKESx#bWCav5`xR%{Chm zOfeiibuxfMxYku2C9_v}m`}M})t3JDqYYX0c+l)e1y`!v9KUf7SH8LnGb@sxEI0tk zZ*Xo@Hd1B^be1yZ0w|9#?6ra;P}y2CCkAWR6j#yNbDS_Bp0Xr^?<%8Ld^qgFMHng( zG;7)}I_3yg$&fn22mL){SS4#=_(@Yxj7|h0-KELZ+y@Rom(mS@b3Xb10HSZbcqUZO zERFItS5!DO5HiimFbd;^V4evHaWCiOXBeRoV(E?fmITRvwd@8kpueOc;~z|W>VJ3jnB3c$imWc+2+UEq;ZH6FIP zn!|YWM*knB+xn2K%u5~?1>J1_>d^lfN@eE3m*0O}`ioh*o;mGlex9GOp`(K7S){q5 zm7V?bjP+75B}NC|n;v>=_N5!PPK*usIU}-uIw_I#?7u|q-;H2&JfFV8LxU<|wm8Er z7+JbY_EreZqG`joVaJD_(!j+ZF?E&Ka2v9skHkyeq*O_gpXA6PuoB?mbAA0cdSKRB z6pSV3-7dBPXIR8hkiCG)o)v=u?A9)#8krDuwieTat8@+K3`35ODx?929Lb8gQr~)V z-u`0wF~<-V^B;Np9fbOryt5>_7~jV-!0J@)CcPzDG;L$wUR{L^>s+O6p_ zjsOwd+&sb2CK-e?+`dGK%zOKVmxH&Jow27n5UhghmFd5?IIj_=APJjF;#sc4UmTeK zNsut5(~J@knG*{WyPO#FJodDQ-E&B%z;7r#>8tDzMP^Etqey&socTVp`|OmbZ>?4*(Zbsh(Z5Z zBK)^&<(nFaKeCM@qwRxEp%s~wNh9J6`Ga%~JVUN~L&$^;=*^mmu7D_4;bF3Q1g6rm^NJ1G z`JWR&T8JjUsG8)GoOy@>}?_wv^)LrqgsdlAkzvwo2)Sp#yjX& z3^$7X`-K7q07#Qts==gLfHFvRaZk)Z*ut;2_iwFAmX@jWk=^j@x2GsI0>8Ehk;vEy zM#>wLUvIC+r|B9bkb|Q_!b1toH&l|-b~r7|lQZS`{;I-1*WF(8CU|x7 z@$$uBPWXUZt95ba*h4DtJX6?MUNY{=^*0$X3_mNh6_Ta|S+2zM?qtZNg|cdENO|`C zu?vx@6)uDD8(ekDqlxb8Lb}jidZbfCjg$gZ09n+Sz8w)%2?W9};DL7(<~7;}IeS4r yPBJv{?z#ZnEL2R6+CX>XpB-!eEy+864iVi{hy1zZ*-Ca4xUOfcTc_>v@ZSJ7Ol?&F literal 0 HcmV?d00001 diff --git a/misc/icon/icon-64x64.png b/misc/icon/icon-64x64.png deleted file mode 100644 index 1a1ac9b552c0c1a944d323bd3d911a98ce04bda7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1429 zcmV;G1#0?f{u^AOgC*4)21)eMN^Z8U{bcUU3G`F ziHq7mO`E>#3OBZ!+J!-*NQG((C{VDVyecvS4yX*{%$zO`Esk>W-kCEDl=&r-xjB#T z`_BKK@7#0moq+@i63l0W0kwo;T`mU*sHWC}iulT%Tmz7RQ(Rw8{72HE0B?tk3U4~W5 zRb40qC(gi_4;G}rv)jOKhhNXZuvhiDc}unR`QTWM>XViVJGVgn?@;uls&DUvC0TI3 z8HTRI3r|Bv`n}_^$%9C_0U_kf2p|Aw9$aXHO->cy6B|`(oHzr{b+CLXTysOs88wK- zi(qSkN|R43m7OcS@XCuysMZc>_yhW`PWtf-DPg+%;MJF4eB3A^CxsbUh z9Z`b^SmJ=uQRwQ1jq6oeN;0g^RmZtGYVe@SdiuhBgeFd?Ycm}E zdHOXbBy!A#9=!lUsE;EHjvj+;nPr6j(ZOi{L7N8Xu&msk{!RK|wy8 zu7{R(HJE2yV6(w*jqpniAYez4>i_%>sBM5?5Hd4h%Tr3AlXYOX!6Of=obS8>moBR{ zLIdV+hbzlp2T`rXYs`^vu@pOQ4cB98=jieJXz%m>R~{5Ln&mP+liRsLvX*#3qX0>SI4-`VQ1q$->+hTt zjX31~_s}kDJ5{&}GOyKFu1C zo~f?uR`8F($gqL0M=eHYj5Yx}My9z6I13FoHHM4~8`|rTc^0EHMq3K>%X?l`$BbT? zq0N>y0nW0TdRFT)XY5C=rh!%3>}gAZ05*1o-s62yOTM@o_E0p>n?e>h0jQIkrnTd8 zt9Bl53hj5a4GJ4gav2BZc5TlCLGxDl2FaAm=iu&pmEMVu87>->>%0F6W8Pl|69SlS zDTwS%M?A0)t9b!}Vlbj$;z39Zm~CoafW^Lg(D*<;c6bRcGT4#bi+KUw{n&>TpF|YW zOd{A%X{q6F=rWxdW27H!IQe=Od`=a7aB*nmHAl0%By^I3q5L8j} j!5sM!SAqlyW()rStbc^7)(?L-00000NkvXXu0mjfX7q_A diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index ca43601..6656ec2 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -78,7 +78,7 @@ MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent), _pUi(new Ui::Main _pSineGraph->setPeriod(10000); QString windowCaption; - windowCaption = QString("ModbusTestSim"); + windowCaption = QString("ModbusSim"); setWindowTitle(windowCaption); } From b6a0b1066480dfd061688674055427ca056b586e Mon Sep 17 00:00:00 2001 From: Jens Geudens Date: Fri, 19 Dec 2025 22:21:22 +0100 Subject: [PATCH 4/6] Fix path --- scripts/deploy_linux.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/deploy_linux.sh b/scripts/deploy_linux.sh index 7209c8f..5a5a766 100644 --- a/scripts/deploy_linux.sh +++ b/scripts/deploy_linux.sh @@ -3,7 +3,7 @@ set -ex # Copy assets cp misc/ModbusSim.desktop release/bin/linux/ -cp misc/icon/icon-64x64.png release/bin/linux/ModbusSim.png +cp misc/icon/icon-256x256.png release/bin/linux/ModbusSim.png cd release/bin/linux/ # now, build AppImage using linuxdeploy and linuxdeploy-plugin-qt From 28c126c5780a5e86ba2003e238acf213a1768fd4 Mon Sep 17 00:00:00 2001 From: Jens Geudens Date: Fri, 19 Dec 2025 22:30:14 +0100 Subject: [PATCH 5/6] Quality reviews --- src/mainwindow.cpp | 2 -- src/mainwindow.h | 17 ++++++++--------- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 6656ec2..fc84873 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -64,8 +64,6 @@ MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent), _pUi(new Ui::Main _pUi->tblRegData->setModel(_pRegisterDataModel); _pUi->tblRegData->verticalHeader()->show(); _pUi->tblRegData->horizontalHeader()->show(); - - /* Don't stretch columns, resize to contents */ _pUi->tblRegData->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); QList registerList = QList() << 0 << 1 << 2 << 3 << 4; diff --git a/src/mainwindow.h b/src/mainwindow.h index d2a7147..305a96f 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -1,14 +1,14 @@ #ifndef MAINWINDOW_H #define MAINWINDOW_H -#include #include +#include -#include "testslavemodbus.h" #include "testslavedata.h" +#include "testslavemodbus.h" -#include "registerdatamodel.h" #include "incgraph.h" +#include "registerdatamodel.h" #include "sinegraph.h" namespace Ui { @@ -20,7 +20,7 @@ class MainWindow : public QMainWindow Q_OBJECT public: - explicit MainWindow(QWidget *parent = nullptr); + explicit MainWindow(QWidget* parent = nullptr); ~MainWindow(); private slots: @@ -34,8 +34,7 @@ private slots: void handleRequestProcessed(); private: - - Ui::MainWindow *_pUi; + Ui::MainWindow* _pUi; bool _bAutoInc; @@ -47,10 +46,10 @@ private slots: QButtonGroup _exceptionGroup; QButtonGroup _errorRecurrenceGroup; - TestSlaveModbus *_pSlaveModbus; - TestSlaveData *_pSlaveData; + TestSlaveModbus* _pSlaveModbus; + TestSlaveData* _pSlaveData; - RegisterDataModel *_pRegisterDataModel; + RegisterDataModel* _pRegisterDataModel; }; #endif // MAINWINDOW_H From 08ff191c14c70b2125ff36e71de96be53a2e25b7 Mon Sep 17 00:00:00 2001 From: Jens Geudens Date: Sat, 20 Dec 2025 16:50:14 +0100 Subject: [PATCH 6/6] Update readme --- README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 424c02f..f054d4e 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,12 @@ Build status: [![Build](https://github.com/ModbusScope/ModbusSim/actions/workflows/ccpp.yml/badge.svg?branch=master)](https://github.com/ModbusScope/ModbusSim/actions/workflows/ccpp.yml) # What is ModbusSim -ModbusSim is an application that can be used to test a modbus master. The application consists of 2 main set of modules. A GUI-less part that contains all logic that can also be used in automated tests. The second part is a GUI that can be used for manual testing. +ModbusSim is a Modbus slave test application for validating Modbus master implementations. + +Key features: + +- Implements multiple configurable holding registers (values can be automatically incremented). +- Generates a sine-wave signal as register values. +- Can inject configurable communication errors to exercise master error handling. ![ModbusSim demo](ModbusSim.png)