コード例 #1
0
ファイル: uart.c プロジェクト: AJDurant/haprrobot
uint32_t cmdLeftMFw(int speed) {
  uint8_t data = (speed > 127) ? 127 : speed;
  sig = M1_FORWARD;
  ret = serialSend(&sig,1);
  ret = serialSend(&data,1);
  return ret;
}
コード例 #2
0
ファイル: uart.c プロジェクト: AJDurant/haprrobot
uint32_t cmdRightMBw(int speed) {
  uint8_t data = (speed > 127) ? 127 : speed;
  sig = M2_BACKWARD;
  ret = serialSend(&sig,1);
  ret = serialSend(&data,1);
  return ret;
}
コード例 #3
0
ファイル: Server.cpp プロジェクト: Salizer/TCPFileSharing
void Server::waitForClient()
{

    printf("Waiting for client.\n");

	serialReceive(msgBuffer); // Recieve filename from client.

    FILE* stream;

    if(stream = fopen(msgBuffer, "r"))      // If opening a file with the name recieved is succesfull continue
    {
        long lengthOfFile = getFileLength(stream);      // Get file length of opened file in bytes.

        printf("User requested: %s with a size of %ld bytes\n", msgBuffer, lengthOfFile); // Print out filename and lenght of file.

        sprintf(msgBuffer, "%ld", lengthOfFile); // Convert lenght of file to string.

		serialSend(msgBuffer, strlen(msgBuffer)+1); // Send lenght of file


        sendFile(stream, lengthOfFile);     // Use function to send file, giving pointer and lenght of the file to send.

        fclose(stream);  // Close file.
    }
    else // If file couldnt be found, print out message and send to client 0 filelenght (its not found).
    {
        printf("Client tried to get: %s\n", msgBuffer);
        serialSend("0", 2);
    }

    printf("Client connection closed\n");
}
コード例 #4
0
ファイル: uart.c プロジェクト: AJDurant/haprrobot
uint32_t cmdDoPlay(char *seq) {
  sig = DO_PLAY;
  //First byte must be length of sequence to read
  uint8_t len = strlen(seq);
  //Songs longer than 100 (1 for reset) are invalid input
  if (len > 99) {return 0;}
  ret = serialSend(&sig, 1);
  ret = serialSend(&len, 1);
  ret = serialSend((uint8_t*)seq, (uint32_t)len);
  return ret;
}
コード例 #5
0
ファイル: uart.c プロジェクト: AJDurant/haprrobot
uint32_t cmdLcdPrint(char *buf) {
  uint8_t length = strlen(buf);
  if (length > 8) {
    buf[9] = '\0';
    length = 8;
  }
  sig = DO_PRINT;
  ret = serialSend(&sig,1);
  ret = serialSend(&length,1);
  ret = serialSend((unsigned char*)buf,length);
  return ret;
}
コード例 #6
0
QByteArray &FalconBoard::comandoNvar(int tipo, QByteArray var)
{
    QByteArray comando;
    comando.resize(8);
    qComando1var_t *qcmd = (qComando1var_t *)comando.data();

    qcmd->header = header;
    qcmd->tipo = tipo;

    comando += var;

    int sum = tipo;
    int *varptr = (int *)var.data();

    for (int i = var.size()/4; i != 0; i--){
        sum += *(varptr++);
    }

    QByteArray CRC;
    CRC.resize(4);
    varptr = (int *)CRC.data();
    *varptr = -sum;

    comando += CRC;
    comando.append("\r\n\r\n");
    emit serialSend(comando);
    if (tipo != qComandoxplanInfo2board_t){
        qDebug() << "[" << comando.size() << "] <- Comando N var tipo: " << tipo;
    }

    //QString state = "[" + QString::number(comando.size()) + "] <- Comando N var tipo: " + QString::number(tipo);
    //emit estadoDebug(state);
    return comando;
}
コード例 #7
0
ファイル: uart.c プロジェクト: AJDurant/haprrobot
uint32_t cmdLinePos(uint8_t *linePos) {
  sig = SEND_LINE_POSITION;
  
  ret = serialSend(&sig, 1);
  ret = serialRecv(linePos, 2);
  return ret;
}
コード例 #8
0
ファイル: mh_zxx.cpp プロジェクト: zbx-sadman/Zabbuino
/*****************************************************************************************************************************
*
*   Read specified metric's value of the Winsen MH-Zxx CO2 sensor via UART, put it to output buffer on success. 
*
*   Returns: 
*     - RESULT_IS_BUFFERED on success
*     - DEVICE_ERROR_TIMEOUT if device stop talking
*
*****************************************************************************************************************************/
int8_t getMHZxxMetricUART(const uint8_t _rxPin, const uint8_t _txPin, uint8_t* _dst, int32_t* _value, const uint8_t _wantsNumber) {
  uint8_t len, rc = DEVICE_ERROR_TIMEOUT;

  SoftwareSerial swSerial(_rxPin, _txPin);

  // Send query only if sensor heated
  if (millis() > MH_ZXX_PREHEAT_TIMEOUT) {
  
     swSerial.begin(MH_ZXX_UART_SPEED);

     _dst[MH_ZXX_STARTING_BYTE] = 0xFF;                           // Starting byte
     _dst[MH_ZXX_SENSOR_NUMBER] = 0x01;                           // Sensor No.
     _dst[MH_ZXX_CMD] = MH_ZXX_CMD_GAS_CONCENTRATION;             // Command
     _dst[3] = _dst[4] = _dst[5] = _dst[6] = _dst[7] = 0x00;      // Stub bytes
     _dst[MH_ZXX_CRC] = 0x79;                                     // Check value

     // Flush all device's transmitted data to avoid get excess data in recieve buffer
     //serialRXFlush(&swSerial, !UART_SLOW_MODE);
     flushStreamRXBuffer(&swSerial, MH_ZXX_DEFAULT_READ_TIMEOUT, !UART_SLOW_MODE);


     // The serial stream can get out of sync. The response starts with 0xff, try to resync : https://github.com/jehy/arduino-esp8266-mh-z19-serial/blob/master/arduino-esp8266-mhz-19-serial.ino
     //  Send command to MH-Zxx
     serialSend(&swSerial, _dst, MH_ZXX_PACKET_SIZE, !UART_SLOW_MODE);

     
     //  Recieve from MH-Zxx
     //  It actually do not use '\r', '\n', '\0' to terminate string
     len = serialRecive(&swSerial, _dst, MH_ZXX_PACKET_SIZE, MH_ZXX_DEFAULT_READ_TIMEOUT, !UART_STOP_ON_CHAR, '\r', !UART_SLOW_MODE);
     
     // Connection timeout occurs
     if (len < MH_ZXX_PACKET_SIZE) { rc = DEVICE_ERROR_TIMEOUT; goto finish; }
     
     // Wrong answer. buffer[0] must contain 0xFF
     if (0xFF != _dst[MH_ZXX_STARTING_BYTE]) { rc = DEVICE_ERROR_WRONG_ANSWER; goto finish; }
     
     // Bad CRC
     // CRC calculate for bytes #1..#9 (byte #0 excluded)
     if (_dst[MH_ZXX_CRC] != crcMHZxx(_dst)) { rc = DEVICE_ERROR_CHECKSUM; goto finish; }
     
     *_value = 256 * _dst[MH_ZXX_GAS_CONCENTRATION_HIGH_BYTE];
     *_value += _dst[MH_ZXX_GAS_CONCENTRATION_LOW_BYTE];
  } else {  // if (millis() > MH_ZXX_PREHEAT_TIMEOUT)
     // Return 'good concentracion' while sensor heated
     *_value = MH_ZXX_PREHEAT_GAS_CONCENTRATION;
  } // if (millis() > MH_ZXX_PREHEAT_TIMEOUT)

  if (!_wantsNumber) {
     ultoa(*_value, (char*) _dst, 10);
  }

  rc = RESULT_IS_BUFFERED;

  finish:
  gatherSystemMetrics(); // Measure memory consumption
  swSerial.~SoftwareSerial(); 
  return rc;

}
コード例 #9
0
ファイル: uart.c プロジェクト: AJDurant/haprrobot
uint32_t cmdAutoCal() {
  sig = AUTO_CALIBRATE;
  uint8_t check;
  ret = serialSend(&sig,1);
  ret = serialRecv(&check,1);
  if (check != (uint8_t)'c')
    return 1;
  else 
    return ret;
}
コード例 #10
0
ファイル: Server.cpp プロジェクト: Salizer/TCPFileSharing
void Server::sendFile(FILE* file, long fileSize)
{
    puts("Sending file");
    size_t readFromFile = 0;

    // Start reading
    while(1)
    {
        readFromFile  = fread(msgBuffer, 1, BUFFERSIZE, file);

        // serialSend info
		serialSend(msgBuffer, readFromFile);

        if(feof(file)) // If everything has been read, break out of while loop.
            break;
    }
}
コード例 #11
0
QByteArray &FalconBoard::comando1var(int tipo, int var)
{
    QByteArray comando;
    comando.resize(sizeof(qComando1var_t));
    qComando1var_t *qcmd = (qComando1var_t *)comando.data();

    qcmd->header = header;
    qcmd->tipo = tipo;
    qcmd->variable1 = var;
    qcmd->CRC = -(tipo + var);
    comando.append("\r\n\r\n");
    emit serialSend(comando);
    qDebug() << "[" << comando.size() << "bytes] <- Comando 1 var tipo: " << tipo;
    QString state = "[" + QString::number(comando.size()) + "] <- Comando 1 var tipo: " + QString::number(tipo);
    emit estadoDebug(state);
    return comando;
}
コード例 #12
0
ファイル: pawn_binding.c プロジェクト: z80/supply
cell pawn_serialSend( AMX * amx, const cell * params )
{
	int i = 0;
	int cnt = 0;
	cell * data = amx_Address( amx, params[1] );
	while ( i < params[2] )
	{
		int j;
        for ( j=0; j<SERIAL_BUF_SZ; j++, i++ )
        {
        	if ( i >= params[2] )
        		break;
        	serialBuffer[j] = (uint8_t)data[i];
        }
        cnt += serialSend( serialBuffer, j );
	}
    return cnt;
}
コード例 #13
0
ファイル: uart.c プロジェクト: AJDurant/haprrobot
uint32_t cmdRstCal() {
  sig = LINE_SENSORS_RESET_CALIBRATION;
  ret = serialSend(&sig, 1);
  return ret;
}
コード例 #14
0
ファイル: uart.c プロジェクト: AJDurant/haprrobot
uint32_t cmdPIDstart(uint8_t *data) {
  sig = SET_PID;
  ret = serialSend(&sig, 1);
  ret = serialSend(data, 5);
  return ret;
}
コード例 #15
0
ファイル: uart.c プロジェクト: AJDurant/haprrobot
uint32_t cmdLcdClear() {
  sig = DO_CLEAR;
  ret = serialSend(&sig,1);
  return ret;
}
コード例 #16
0
ファイル: uart.c プロジェクト: AJDurant/haprrobot
uint32_t cmdCalSens(uint16_t *sens) {
  sig = SEND_CAL_SENSOR_VALUES;
  ret = serialSend(&sig,1);
  ret = serialRecv((uint8_t*)sens,10);
  return ret;
}
コード例 #17
0
ファイル: uart.c プロジェクト: AJDurant/haprrobot
uint32_t cmdSig(unsigned char *buf) {
  sig = SEND_SIGNATURE;
  ret = serialSend(&sig,1);
  ret = serialRecv(buf,6);
  return ret;
}
コード例 #18
0
ファイル: uart.c プロジェクト: AJDurant/haprrobot
uint32_t cmdPIDstop() {
  sig = STOP_PID;
  ret = serialSend(&sig, 1);
  return ret;
}