Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
U
uniset2
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
1
Issues
1
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
UniSet project repositories
uniset2
Commits
6cf2b087
Commit
6cf2b087
authored
Nov 16, 2010
by
Pavel Vaynerman
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ModbusSlave: внёс проверку на длину пакета и обработку исключений
(а то процесс вылетает)
parent
2cf1c098
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
34 additions
and
17 deletions
+34
-17
create_links.sh
Utilities/Admin/create_links.sh
+0
-8
libuniset.spec
conf/libuniset.spec
+10
-1
ModbusClient.cc
src/Communications/Modbus/ModbusClient.cc
+18
-8
ModbusTypes.cc
src/Communications/Modbus/ModbusTypes.cc
+6
-0
No files found.
Utilities/Admin/create_links.sh
View file @
6cf2b087
...
...
@@ -5,20 +5,12 @@ ln -s -f admin.sh start
ln
-s
-f
admin.sh exist
ln
-s
-f
admin.sh finish
ln
-s
-f
admin.sh foldUp
ln
-s
-f
admin.sh info
ln
-s
-f
admin.sh alarm
ln
-s
-f
admin.sh create
ln
-s
-f
admin.sh logrotate
ln
-s
-f
admin.sh omap
ln
-s
-f
admin.sh msgmap
ln
-s
-f
admin.sh anotify
ln
-s
-f
admin.sh dnotify
ln
-s
-f
admin.sh saveValue
ln
-s
-f
admin.sh saveState
ln
-s
-f
admin.sh setValue
ln
-s
-f
admin.sh setState
ln
-s
-f
admin.sh getValue
ln
-s
-f
admin.sh getState
ln
-s
-f
admin.sh getRawValue
ln
-s
-f
admin.sh getCalibrate
ln
-s
-f
admin.sh
help
...
...
conf/libuniset.spec
View file @
6cf2b087
...
...
@@ -3,7 +3,7 @@
Name: libuniset
Version: 0.99
Release: eter1
5
Release: eter1
8
Summary: UniSet - library for building distributed industrial control systems
License: GPL
Group: Development/C++
...
...
@@ -184,6 +184,15 @@ rm -f %buildroot%_libdir/*.la
%exclude %_pkgconfigdir/libUniSet.pc
%changelog
* Tue Nov 16 2010 Pavel Vainerman <pv@etersoft.ru> 0.99-eter17
- fixed bug in MBSlave
* Mon Nov 15 2010 Pavel Vainerman <pv@etersoft.ru> 0.99-eter16
- Modbus: add test for query count
* Mon Nov 15 2010 Pavel Vainerman <pv@etersoft.ru> 0.99-eter15
- new build
* Fri Nov 12 2010 Pavel Vainerman <pv@etersoft.ru> 0.99-eter14
- new build
...
...
src/Communications/Modbus/ModbusClient.cc
View file @
6cf2b087
...
...
@@ -323,7 +323,7 @@ mbErrCode ModbusClient::recv( ModbusAddr addr, ModbusByte qfunc,
}
return
erTimeOut
;
}
// --------------------------------------------------------------------------------
...
...
@@ -540,7 +540,7 @@ mbErrCode ModbusClient::recv_pdu( ModbusByte qfunc, ModbusMessage& rbuf, timeout
return
erBadCheckSum
;
}
return
erNoError
;
return
erNoError
;
}
else
if
(
rbuf
.
func
==
fnReadInputStatus
)
{
...
...
@@ -650,7 +650,7 @@ mbErrCode ModbusClient::recv_pdu( ModbusByte qfunc, ModbusMessage& rbuf, timeout
return
erBadCheckSum
;
}
return
erNoError
;
return
erNoError
;
}
else
if
(
rbuf
.
func
==
fnReadOutputRegisters
)
{
...
...
@@ -704,7 +704,7 @@ mbErrCode ModbusClient::recv_pdu( ModbusByte qfunc, ModbusMessage& rbuf, timeout
return
erBadCheckSum
;
}
return
erNoError
;
return
erNoError
;
}
else
if
(
rbuf
.
func
==
fnForceMultipleCoils
)
{
...
...
@@ -730,7 +730,7 @@ mbErrCode ModbusClient::recv_pdu( ModbusByte qfunc, ModbusMessage& rbuf, timeout
dlog
[
Debug
::
WARN
]
<<
err
.
str
()
<<
endl
;
return
erBadCheckSum
;
}
return
erNoError
;
return
erNoError
;
}
else
if
(
rbuf
.
func
==
fnWriteOutputRegisters
)
{
...
...
@@ -837,7 +837,7 @@ mbErrCode ModbusClient::recv_pdu( ModbusByte qfunc, ModbusMessage& rbuf, timeout
return
erBadDataValue
;
// return erInvalidFormat;
}
return
erNoError
;
return
erNoError
;
}
else
if
(
rbuf
.
func
==
fnFileTransfer
)
{
...
...
@@ -911,7 +911,7 @@ mbErrCode ModbusClient::recv_pdu( ModbusByte qfunc, ModbusMessage& rbuf, timeout
return erBadCheckSum;
}
return erNoError;
return erNoError;
}
else if( rbuf.func == fnRemoteService )
{
...
...
@@ -962,7 +962,7 @@ mbErrCode ModbusClient::recv_pdu( ModbusByte qfunc, ModbusMessage& rbuf, timeout
return erBadCheckSum;
}
return erNoError;
return erNoError;
}
#endif // not standart commands
...
...
@@ -973,6 +973,11 @@ mbErrCode ModbusClient::recv_pdu( ModbusByte qfunc, ModbusMessage& rbuf, timeout
return
erUnExpectedPacketType
;
}
}
catch
(
mbException
&
ex
)
{
dlog
[
Debug
::
CRIT
]
<<
"(recv): "
<<
ex
<<
endl
;
return
ex
.
err
;
}
catch
(
UniSetTypes
::
TimeOut
)
{
// cout << "(recv): catch TimeOut " << endl;
...
...
@@ -1006,6 +1011,11 @@ mbErrCode ModbusClient::send( ModbusMessage& msg )
{
sendData
((
unsigned
char
*
)(
&
msg
),
len
);
}
catch
(
mbException
&
ex
)
{
dlog
[
Debug
::
CRIT
]
<<
"(send): "
<<
ex
<<
endl
;
return
ex
.
err
;
}
catch
(
Exception
&
ex
)
// SystemError
{
dlog
[
Debug
::
CRIT
]
<<
"(send): "
<<
ex
<<
endl
;
...
...
src/Communications/Modbus/ModbusTypes.cc
View file @
6cf2b087
...
...
@@ -643,6 +643,8 @@ void ReadInputStatusMessage::init( ModbusMessage& m )
// переворачиваем слова
start
=
SWAPSHORT
(
start
);
count
=
SWAPSHORT
(
count
);
if
(
count
>
MAXDATALEN
)
throw
mbException
(
erPacketTooLong
);
}
// -------------------------------------------------------------------------
...
...
@@ -845,6 +847,8 @@ void ReadOutputMessage::init( ModbusMessage& m )
// переворачиваем слова
start
=
SWAPSHORT
(
start
);
count
=
SWAPSHORT
(
count
);
if
(
count
>
MAXDATALEN
)
throw
mbException
(
erPacketTooLong
);
}
// -------------------------------------------------------------------------
...
...
@@ -1063,6 +1067,8 @@ void ReadInputMessage::init( ModbusMessage& m )
// переворачиваем слова
start
=
SWAPSHORT
(
start
);
count
=
SWAPSHORT
(
count
);
if
(
count
>
MAXDATALEN
)
throw
mbException
(
erPacketTooLong
);
}
// -------------------------------------------------------------------------
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment