00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #include "ArExport.h"
00028 #include "ariaOSDef.h"
00029 #include "ArDeviceConnection.h"
00030 #include "ArRobotPacketSender.h"
00031
00038 ArRobotPacketSender::ArRobotPacketSender(unsigned char sync1,
00039 unsigned char sync2) :
00040 myPacket(sync1, sync2)
00041 {
00042 myDeviceConn = NULL;
00043 }
00044
00051 ArRobotPacketSender::ArRobotPacketSender(
00052 ArDeviceConnection *deviceConnection, unsigned char sync1,
00053 unsigned char sync2) :
00054 myPacket(sync1, sync2)
00055 {
00056 myDeviceConn = deviceConnection;
00057 }
00058
00059 ArRobotPacketSender::~ArRobotPacketSender()
00060 {
00061
00062 }
00063
00064 void ArRobotPacketSender::setDeviceConnection(
00065 ArDeviceConnection *deviceConnection)
00066 {
00067 myDeviceConn = deviceConnection;
00068 }
00069
00070 ArDeviceConnection *ArRobotPacketSender::getDeviceConnection(void)
00071 {
00072 return myDeviceConn;
00073 }
00074
00075 bool ArRobotPacketSender::connValid(void)
00076 {
00077 return (myDeviceConn != NULL &&
00078 myDeviceConn->getStatus() == ArDeviceConnection::STATUS_OPEN);
00079 }
00080
00085 bool ArRobotPacketSender::com(unsigned char number)
00086 {
00087 if (!connValid())
00088 return false;
00089
00090 myPacket.empty();
00091 myPacket.setID(number);
00092
00093 myPacket.finalizePacket();
00094
00095 return myDeviceConn->write(myPacket.getBuf(), myPacket.getLength());
00096 }
00097
00103 bool ArRobotPacketSender::comInt(unsigned char command,
00104 short int argument)
00105 {
00106
00107 if (!connValid())
00108 return false;
00109
00110 myPacket.empty();
00111 myPacket.setID(command);
00112 if (argument >= 0)
00113 {
00114 myPacket.uByteToBuf(INTARG);
00115 }
00116 else
00117 {
00118 myPacket.uByteToBuf(NINTARG);
00119 argument = -argument;
00120 }
00121 myPacket.uByte2ToBuf(argument);
00122
00123 myPacket.finalizePacket();
00124
00125 if (myDeviceConn->write(myPacket.getBuf(), myPacket.getLength()) >= 0)
00126 return true;
00127
00128 return false;
00129
00130 }
00131
00138 bool ArRobotPacketSender::com2Bytes(unsigned char command, char high,
00139 char low)
00140 {
00141 return comInt(command, ((high & 0xff)<<8) + (low & 0xff));
00142 }
00143
00149 bool ArRobotPacketSender::comStr(unsigned char command,
00150 const char *argument)
00151 {
00152 size_t size;
00153 if (!connValid())
00154 return false;
00155
00156 myPacket.empty();
00157
00158 myPacket.setID(command);
00159 myPacket.uByteToBuf(STRARG);
00160
00161 size = strlen(argument);
00162 if (size > 200)
00163 return false;
00164
00165 myPacket.uByteToBuf(size);
00166 myPacket.strToBuf(argument);
00167
00168 myPacket.finalizePacket();
00169
00170 if (myDeviceConn->write(myPacket.getBuf(), myPacket.getLength()) >= 0)
00171 return true;
00172
00173 return false;
00174
00175 }
00176
00183 bool ArRobotPacketSender::comStrN(unsigned char command,
00184 const char *str, int size)
00185 {
00186 if (!connValid())
00187 return false;
00188
00189 myPacket.empty();
00190
00191 myPacket.setID(command);
00192 myPacket.uByteToBuf(STRARG);
00193
00194 myPacket.uByteToBuf(size);
00195 myPacket.strNToBuf(str, size);
00196
00197 myPacket.finalizePacket();
00198
00199 if (myDeviceConn->write(myPacket.getBuf(), myPacket.getLength()) >= 0)
00200 return true;
00201
00202 return false;
00203
00204 }
00205
00206