Testing Modbus RS485 commands
Dependencies: mbed BufferedSerial
main.cpp@5:ddf182356d90, 2021-10-06 (annotated)
- Committer:
- zillkhan
- Date:
- Wed Oct 06 11:43:00 2021 +0000
- Revision:
- 5:ddf182356d90
Initial changes
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
zillkhan | 5:ddf182356d90 | 1 | #include "mbed.h" |
zillkhan | 5:ddf182356d90 | 2 | #include "BufferedSerial.h" |
zillkhan | 5:ddf182356d90 | 3 | |
zillkhan | 5:ddf182356d90 | 4 | Serial pc(USBTX, USBRX,115200); |
zillkhan | 5:ddf182356d90 | 5 | Serial RS485(D1,D0); // Tx, Rx |
zillkhan | 5:ddf182356d90 | 6 | DigitalOut ho(D2); |
zillkhan | 5:ddf182356d90 | 7 | |
zillkhan | 5:ddf182356d90 | 8 | typedef uint8_t byte; |
zillkhan | 5:ddf182356d90 | 9 | |
zillkhan | 5:ddf182356d90 | 10 | //byte data[9] = {0x01,0x04,0x00,0x48,0x00,0x02,0xf1,0xdd};//your data |
zillkhan | 5:ddf182356d90 | 11 | byte enable[9] = {0x01,0x06,0x20,0x0E,0x00,0x08,0xE2,0x0F};//your data |
zillkhan | 5:ddf182356d90 | 12 | byte run[9] = {0x01,0x06,0x20,0x89,0x00,0x0A,0xD3,0xE7};//your data |
zillkhan | 5:ddf182356d90 | 13 | byte stop[9] = {0x01,0x06,0x20,0x0E,0x00,0x07,0xA2,0x0B};//your data |
zillkhan | 5:ddf182356d90 | 14 | |
zillkhan | 5:ddf182356d90 | 15 | int main() |
zillkhan | 5:ddf182356d90 | 16 | { |
zillkhan | 5:ddf182356d90 | 17 | printf("Main\n"); |
zillkhan | 5:ddf182356d90 | 18 | RS485.baud(115200); |
zillkhan | 5:ddf182356d90 | 19 | pc.baud(115200); |
zillkhan | 5:ddf182356d90 | 20 | while(1) { |
zillkhan | 5:ddf182356d90 | 21 | RS485.baud(115200); |
zillkhan | 5:ddf182356d90 | 22 | pc.printf("Starting\n"); |
zillkhan | 5:ddf182356d90 | 23 | ho = 1; // 3.3V output from digital out pin |
zillkhan | 5:ddf182356d90 | 24 | |
zillkhan | 5:ddf182356d90 | 25 | for (int i=0; i<(sizeof(enable)-1);i++) |
zillkhan | 5:ddf182356d90 | 26 | { |
zillkhan | 5:ddf182356d90 | 27 | RS485.putc(enable[i]); |
zillkhan | 5:ddf182356d90 | 28 | } |
zillkhan | 5:ddf182356d90 | 29 | |
zillkhan | 5:ddf182356d90 | 30 | wait_ms(2000); // Silent interval |
zillkhan | 5:ddf182356d90 | 31 | |
zillkhan | 5:ddf182356d90 | 32 | for (int i=0; i<(sizeof(run)-1);i++) |
zillkhan | 5:ddf182356d90 | 33 | { |
zillkhan | 5:ddf182356d90 | 34 | RS485.putc(run[i]); |
zillkhan | 5:ddf182356d90 | 35 | } |
zillkhan | 5:ddf182356d90 | 36 | |
zillkhan | 5:ddf182356d90 | 37 | wait_ms(5000); // Silent interval |
zillkhan | 5:ddf182356d90 | 38 | |
zillkhan | 5:ddf182356d90 | 39 | for (int i=0; i<(sizeof(stop)-1);i++) |
zillkhan | 5:ddf182356d90 | 40 | { |
zillkhan | 5:ddf182356d90 | 41 | RS485.putc(stop[i]); |
zillkhan | 5:ddf182356d90 | 42 | } |
zillkhan | 5:ddf182356d90 | 43 | |
zillkhan | 5:ddf182356d90 | 44 | wait_ms(50); // Silent interval |
zillkhan | 5:ddf182356d90 | 45 | |
zillkhan | 5:ddf182356d90 | 46 | pc.printf("Getting data\n"); |
zillkhan | 5:ddf182356d90 | 47 | |
zillkhan | 5:ddf182356d90 | 48 | ho = 0; |
zillkhan | 5:ddf182356d90 | 49 | pc.printf("The RS485 value %d\n",RS485.readable()); |
zillkhan | 5:ddf182356d90 | 50 | |
zillkhan | 5:ddf182356d90 | 51 | char buffer[50]; |
zillkhan | 5:ddf182356d90 | 52 | RS485.gets(buffer, 9); |
zillkhan | 5:ddf182356d90 | 53 | |
zillkhan | 5:ddf182356d90 | 54 | for (int count = 0; count < 8; count++) { |
zillkhan | 5:ddf182356d90 | 55 | pc.printf("%02hhX", buffer[count]); |
zillkhan | 5:ddf182356d90 | 56 | } |
zillkhan | 5:ddf182356d90 | 57 | pc.printf("\n"); |
zillkhan | 5:ddf182356d90 | 58 | pc.printf("Done\n"); |
zillkhan | 5:ddf182356d90 | 59 | wait_ms(1000); |
zillkhan | 5:ddf182356d90 | 60 | } |
zillkhan | 5:ddf182356d90 | 61 | } |