1 module tests.plc;
2 
3 import std.stdio;
4 import unit_threaded;
5 
6 import dinodave;
7 
8 /*
9    S7 should be connected at 192.168.221.102o
10 
11    Run with:
12    ./libdinodave-test -d tests.plc.set_bit_should_work
13 */
14 @UnitTest
15 @HiddenTest
16 void set_bit_should_work() {
17    enum string IP = "192.168.221.102";
18    enum DB = 23;
19    enum ADDR = 200;
20    try {
21       auto s7 = new IsoTcp(IP);
22       s7.openConnection();
23       writeln("opened");
24       scope(exit) s7.closeConnection();
25       ubyte[] buf = [0, 0];
26       s7.writeBytes(DB, ADDR, 1, buf);
27       s7.setBit(DB, ADDR, 1);
28       s7.setBit(DB, ADDR, 2);
29       s7.readBytes(DB, ADDR,  1);
30       int v = s7.getU8();
31       writeln("set ", v);
32       v.shouldEqual(6);
33       s7.clearBit(DB, ADDR, 1);
34 
35       s7.readBytes(DB, ADDR, 1);
36       v = s7.getU8();
37       writeln("reset ", v);
38 
39       v.shouldEqual(4);
40 
41    } catch(Exception e) {
42       writeln(e);
43    }
44 
45 }
46 import std.conv;
47 @HiddenTest
48 void testReadPLCTime() {
49    enum string IP = "192.168.221.102";
50    enum DB = 23;
51    enum ADDR = 200;
52    try {
53       auto s7 = new IsoTcp(IP);
54       s7.openConnection();
55       scope(exit) s7.closeConnection();
56 
57       int v = s7.readPLCTime();
58       for (size_t i = 0; i < 10; ++i) {
59          int a = fromBCD(to!ubyte(s7.getU8()));
60          writefln("%d: %d ", i, a);
61       }
62 
63    } catch(Exception e) {
64       writeln(e);
65    }
66 }