MDX-15,20の制御用library
MDX20.cpp@2:8446eb1774c4, 2016-10-16 (annotated)
- Committer:
- suupen
- Date:
- Sun Oct 16 12:42:34 2016 +0000
- Revision:
- 2:8446eb1774c4
- Parent:
- 1:1751fee99a0d
- Child:
- 3:3bf2936b8d9b
?????????;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
suupen | 1:1751fee99a0d | 1 | #include "MDX20.h" |
suupen | 1:1751fee99a0d | 2 | #include "BufferedSerial.h" |
suupen | 1:1751fee99a0d | 3 | |
suupen | 1:1751fee99a0d | 4 | |
suupen | 1:1751fee99a0d | 5 | MDX20::MDX20(PinName tx, PinName rx, PinName cts) : _serial(tx, rx), _cts(cts, PullUp) |
suupen | 1:1751fee99a0d | 6 | { |
suupen | 1:1751fee99a0d | 7 | |
suupen | 1:1751fee99a0d | 8 | _serial.baud(9600); |
suupen | 1:1751fee99a0d | 9 | _serial.format(8,Serial::None,1); |
suupen | 1:1751fee99a0d | 10 | } |
suupen | 1:1751fee99a0d | 11 | |
suupen | 1:1751fee99a0d | 12 | MDX20::~MDX20() |
suupen | 1:1751fee99a0d | 13 | { |
suupen | 1:1751fee99a0d | 14 | } |
suupen | 1:1751fee99a0d | 15 | |
suupen | 2:8446eb1774c4 | 16 | void MDX20::clearPositon(void) |
suupen | 2:8446eb1774c4 | 17 | { |
suupen | 2:8446eb1774c4 | 18 | D_position[Z_x] = 0; |
suupen | 2:8446eb1774c4 | 19 | D_position[Z_y] = 0; |
suupen | 2:8446eb1774c4 | 20 | D_position[Z_z] = 0; |
suupen | 2:8446eb1774c4 | 21 | } |
suupen | 2:8446eb1774c4 | 22 | void MDX20::answerPositon(int16_t *position) |
suupen | 2:8446eb1774c4 | 23 | { |
suupen | 2:8446eb1774c4 | 24 | *(position + Z_x) = D_position[Z_x]; |
suupen | 2:8446eb1774c4 | 25 | *(position + Z_y) = D_position[Z_y]; |
suupen | 2:8446eb1774c4 | 26 | *(position + Z_z) = D_position[Z_z]; |
suupen | 2:8446eb1774c4 | 27 | |
suupen | 2:8446eb1774c4 | 28 | } |
suupen | 2:8446eb1774c4 | 29 | |
suupen | 2:8446eb1774c4 | 30 | void MDX20::integralPosition(char *data) |
suupen | 2:8446eb1774c4 | 31 | { |
suupen | 2:8446eb1774c4 | 32 | |
suupen | 2:8446eb1774c4 | 33 | } |
suupen | 2:8446eb1774c4 | 34 | |
suupen | 1:1751fee99a0d | 35 | /** |
suupen | 1:1751fee99a0d | 36 | * MDX-15/20へのデータ送信 |
suupen | 1:1751fee99a0d | 37 | * @@para *data : データ一行の先頭アドレス |
suupen | 1:1751fee99a0d | 38 | * @@para uint8_t : 0:送信キャンセル 1:送信完了 |
suupen | 1:1751fee99a0d | 39 | */ |
suupen | 1:1751fee99a0d | 40 | uint8_t MDX20::sendData(char* data) |
suupen | 1:1751fee99a0d | 41 | { |
suupen | 1:1751fee99a0d | 42 | uint8_t ans = 0; // 0:送信キャンセル 1:送信完了 |
suupen | 1:1751fee99a0d | 43 | |
suupen | 2:8446eb1774c4 | 44 | while(_cts != 0) {} |
suupen | 2:8446eb1774c4 | 45 | wait(0.1); // このwait timeがないとMDX-20からのwait指示を読み飛ばす |
suupen | 2:8446eb1774c4 | 46 | // printf("%s\r\n",data); |
suupen | 2:8446eb1774c4 | 47 | _serial.printf("%s\r\n",data); |
suupen | 2:8446eb1774c4 | 48 | ans = 1; |
suupen | 2:8446eb1774c4 | 49 | |
suupen | 1:1751fee99a0d | 50 | return (ans); |
suupen | 1:1751fee99a0d | 51 | } |
suupen | 1:1751fee99a0d | 52 | |
suupen | 1:1751fee99a0d | 53 | int MDX20::putc(int c) |
suupen | 1:1751fee99a0d | 54 | { |
suupen | 1:1751fee99a0d | 55 | _serial.putc(c); |
suupen | 1:1751fee99a0d | 56 | return c; |
suupen | 1:1751fee99a0d | 57 | } |
suupen | 1:1751fee99a0d | 58 | |
suupen | 2:8446eb1774c4 | 59 | uint8_t MDX20::initial(void) |
suupen | 2:8446eb1774c4 | 60 | { |
suupen | 2:8446eb1774c4 | 61 | uint8_t ans; |
suupen | 2:8446eb1774c4 | 62 | ans &= sendData(";;^IN"); |
suupen | 2:8446eb1774c4 | 63 | ans &= sendData("!MC0"); |
suupen | 2:8446eb1774c4 | 64 | ans &= sendData("^PA"); |
suupen | 2:8446eb1774c4 | 65 | ans &= sendData("Z0,0,0"); |
suupen | 2:8446eb1774c4 | 66 | clearPositon(); |
suupen | 2:8446eb1774c4 | 67 | return (ans); |
suupen | 2:8446eb1774c4 | 68 | } |
suupen | 2:8446eb1774c4 | 69 | |
suupen | 2:8446eb1774c4 | 70 | uint8_t MDX20::final(void) |
suupen | 2:8446eb1774c4 | 71 | { |
suupen | 2:8446eb1774c4 | 72 | uint8_t ans; |
suupen | 2:8446eb1774c4 | 73 | ans &= sendData("!MC0"); |
suupen | 2:8446eb1774c4 | 74 | ans &= sendData("^PA"); |
suupen | 2:8446eb1774c4 | 75 | ans &= sendData("Z0,0,0"); |
suupen | 2:8446eb1774c4 | 76 | clearPositon(); |
suupen | 2:8446eb1774c4 | 77 | ans &= sendData("^IN"); |
suupen | 2:8446eb1774c4 | 78 | return (ans); |
suupen | 2:8446eb1774c4 | 79 | } |
suupen | 2:8446eb1774c4 | 80 | |
suupen | 2:8446eb1774c4 | 81 | uint8_t MDX20::zeroSetting(void) |
suupen | 2:8446eb1774c4 | 82 | { |
suupen | 2:8446eb1774c4 | 83 | uint8_t ans; |
suupen | 2:8446eb1774c4 | 84 | |
suupen | 2:8446eb1774c4 | 85 | ans &= sendData("!X00"); |
suupen | 2:8446eb1774c4 | 86 | ans &= sendData("!Y00"); |
suupen | 2:8446eb1774c4 | 87 | ans &= sendData("!Z00"); |
suupen | 2:8446eb1774c4 | 88 | clearPositon(); |
suupen | 2:8446eb1774c4 | 89 | return (ans); |
suupen | 2:8446eb1774c4 | 90 | } |
suupen | 2:8446eb1774c4 | 91 | uint8_t MDX20::XYZMove(int16_t x, int16_t y, int16_t z) |
suupen | 2:8446eb1774c4 | 92 | { |
suupen | 2:8446eb1774c4 | 93 | uint8_t ans; |
suupen | 2:8446eb1774c4 | 94 | char buffer[100]; |
suupen | 2:8446eb1774c4 | 95 | |
suupen | 2:8446eb1774c4 | 96 | ans &= sendData("!MC0"); |
suupen | 2:8446eb1774c4 | 97 | ans &= sendData("^PR"); |
suupen | 2:8446eb1774c4 | 98 | sprintf(buffer, "Z%05d,%05d,%05d",x, y, z); |
suupen | 2:8446eb1774c4 | 99 | ans &= sendData(buffer); |
suupen | 2:8446eb1774c4 | 100 | |
suupen | 2:8446eb1774c4 | 101 | return (ans); |
suupen | 2:8446eb1774c4 | 102 | } |