Serge Camille
a047c5bba4
Fix chunk size for WriteBytesAsync.
...
The previous problem of not being able to use a larger chunk size than 200 was that the complete header building code for the async implementation was incorrect. Specifically, it wrote the package size only as a byte instead of a int16, thus restricting the package size to something < 256.
With the sharing of the Header building code in the previous commits, this problem was resolved by accident, and thus the chunk size can be increased to the maximum value allowed by the PDUSize.
2020-09-02 20:16:53 +02:00
Serge Camille
783c456dc9
Copy ReadBytes data in one go.
...
Instead of using a loop, use Array.Copy to
2020-09-02 20:16:52 +02:00
Serge Camille
688d4e2a28
Change implementation header package creation for reading bytes.
...
Use MemoryStream as well.
2020-09-02 20:16:19 +02:00
Serge Camille
bb0b57c574
Add method BuildWriteBitPackage
...
Merges data creation between sync and async for writing bit values.
2020-09-02 20:16:17 +02:00
Serge Camille
2f07d43062
Change BuildWriteBytesPackage to use MemoryStream.
2020-09-02 20:13:18 +02:00
Serge Camille
4ef037881c
Simplify WriteBytes functiosn by merging common BuildPackage code.
...
Both Synchronous and Asynchronous need to build the same binary data package to write a bytes array. Move that package building out into a common function.
Also use IEnumerable to pass in data instead of converting it to array and back multiple times. Not that happy with the whole ByteArray class, we could probably just use a MemoryStream instead.
2020-09-02 20:11:35 +02:00
Serge Camille
fbd8a13c6c
ReadBytesAsync: Replace list with a plain byte array.
2020-09-02 20:09:51 +02:00
Serge Camille
2a451bc049
TSDU: Use Array.Copy for Read functions.
2020-09-02 20:09:51 +02:00
Serge Camille
bd8177d39e
Add nullable support throughout the whole library.
...
This requires reference types that can be null to be annotated by a ? operator, similar to value types.
This gives the advantage that the compiler can warn against any null dereference exceptions, of which this commits elimits a few.
To make the underlying protocol implementation not any more complicated and to eliminate existing problems, and not that precise error reporting, I replaced some return null statements with explicit Exceptions. This lead to the assumption that those core protocoll functions always return non-null objects if they do not throw, making the PLC code simpler.
Adjust some NotConnected tests to look for explicit PlcException instead of NullReferenceException.
2020-08-31 22:48:45 +02:00
Michael Croes
647d4c7ae2
AppVeyor and infra updates
...
- Change build image to VS 2019
- Update Microsoft.SourceLink.GitHub package
- Update solution file
- Build separate symbol package (.snupkg)
2020-08-31 22:28:59 +02:00
Serge Camille
7035d22506
Convert UnitTest project to SDK project type.
2020-08-18 09:20:31 +02:00
Serge Camille
28257f28b3
Dtl: Add TypeLengthInBytes constant instead of always rewriting 12.
2020-08-17 19:20:19 +02:00
Serge Camille
a1d87de2d9
Rename DTL to DateTimeLong
2020-08-17 19:14:28 +02:00
Serge Camille
4be5765fc9
Run Resharper cleanup on DTL class, fix Dtl.ToByteArray list capacity.
2020-08-16 22:50:23 +02:00
Serge Camille
6614c7330a
Hook up DTL to VarType enum and PLCHelper.
2020-08-16 22:36:23 +02:00
Serge Camille
5d59c8284d
Add DTL type
...
Add new class Types.Dtl by taking the DateTime type and adjusting things.
Also add unit test with binary data calculated by hand. (Need to verify with actual S7 data)
2020-08-16 22:31:26 +02:00
Michael Croes
0b6226327b
PLC: Improve exceptions on Read
...
Close #258 .
2020-08-13 22:47:32 +02:00
Michael Croes
0a8ee0e091
PLCAddress: Add OB, OW, OD types from PR #277
...
PR #246 included most types also included in #277 , this adds OB, OW and
OD that were only in #277 .
Close #277 .
2020-08-13 22:04:53 +02:00
Michael Croes
9ea54be524
Types/Class: Start arrays on even bytes
...
Addresses #175
2020-08-13 21:40:44 +02:00
Tim Verwaal
8dc89867e9
Extended PLCAddress.Parse method
2019-12-19 10:55:51 +01:00
Michael Croes
6a84b6f124
Use ToBitArray overload with length in ParseBytes
2019-07-17 21:46:18 +02:00
Michael Croes
b3cb45de37
Add ToBitArray overload with length
2019-07-17 21:46:17 +02:00
Michael Croes
4fcab9a167
Fix VarTypeToByteLength for bit arrays
2019-07-17 21:46:17 +02:00
Michael Croes
2a4485941f
Calculate PDU size constraints
2019-07-17 21:39:41 +02:00
Michael Croes
0e5651b37f
Merge branch 'develop' into develop
2019-07-17 21:22:45 +02:00
Michael Croes
427d8124de
Add DateTime support for read/write methods
2019-07-17 21:07:45 +02:00
Michael Croes
735f1d4533
Add support for DateTime array conversion
2019-07-17 21:07:45 +02:00
Michael Croes
2aa4f08836
Add Types.DateTime
2019-07-17 21:07:44 +02:00
Michael Croes
cf64c65c23
Provide a clear message on Encoding.ASCII.GetString exceptions
2019-07-17 21:04:26 +02:00
tatzemax
3872e638aa
Merge branch 'develop' into develop
2019-07-11 17:57:14 +02:00
Thomas Jager
e124c70fb1
Merge branch 'develop' into develop
2019-07-11 12:24:07 +02:00
Max
b2183dd760
rename PORT to Port
...
add a Space
2019-07-10 20:42:52 +02:00
max
f2d33855ca
add Port Setting for PLC.
...
is required for port forwarding
2019-07-10 18:44:04 +02:00
max
b1d2d11904
add Port Setting for PLC.
...
is required for port forwarding
2019-07-10 18:17:02 +02:00
Evgeniy
23796de8bf
Update PlcSynchronous.cs
...
MaxPDUSize for WriteBytes
2019-07-03 13:04:33 +05:00
Thomas Jäger
02b38326c8
Fix padding of last dataitem in WriteMulitple fixes #222
2019-06-19 13:02:53 +02:00
Смирнов Виталий
2fbabd5517
style: updated code style.
2019-05-28 10:01:28 +03:00
Смирнов Виталий
800a790b89
feature: added changing ReadTimeout and WriteTimeout for connected tcpClient.
2019-05-28 08:56:06 +03:00
Смирнов Виталий
0dbe401ce9
feature: added ReadTimeout and WriteTimeout to PLC class for NetworkStream.
2019-05-27 13:52:38 +03:00
Michael Croes
ce359789dc
Add explicit support for Logo0BA8
...
Unsure if the PLC actually requires the specfically provided TSAP's,
but these have been verified to work.
2019-03-14 23:04:26 +01:00
Michael Croes
4ae905ffd5
Set PDU size to 960
...
Allows communication with Siemens Logo 0BA8, currently no Siemens PLC
is known to support >960 PDU size.
2019-03-14 23:04:26 +01:00
Michael Croes
70506e7dba
Throw InvalidDataException in Open(Async)
2019-03-14 23:02:15 +01:00
Michael Croes
20458d4b46
Add InvalidDataException
2019-03-14 23:02:14 +01:00
Michael Croes
898b870221
Expose TPKT on TPDU
...
Temporary hack to allow access to the received TPKT data.
2019-03-14 23:02:14 +01:00
Adam Oleksy
de084394a6
Fix writing nested classes
2018-10-04 18:14:44 +02:00
Adam Oleksy
370fd6b3d9
Fix reading nested classes
2018-09-26 14:43:49 +02:00
Michael Croes
e44cb1571c
Validate BitAdr when writing a bit
2018-07-12 20:51:37 +02:00
Michael Croes
ab486e3d1f
Only set bitNumber in address for Write when a bit is written
2018-07-12 20:51:20 +02:00
Michael Croes
705743e5f1
Convert bitNumber '-1' to 0 in DataItem
2018-07-12 20:49:44 +02:00
Michael Croes
09d323925a
Add length to String.ToByteArray(...)
2018-07-11 22:07:08 +02:00