Skip to main content
added 270 characters in body
Source Link
#include "SerialTransfer.h"

char str[1000];str[100];

SerialTransfer myTransfer;
int LED = 13;

void blinkLED(int n)
{
  for (int i = 0; i < n; i++) {
    digitalWrite(LED, HIGH);
    delay(150);
    digitalWrite(LED, LOW);
    delay(150);
  }
} 


void setup()
{
  pinMode(LED, OUTPUT);
  digitalWrite(LED, LOW);
  str[0] = 'S';
  str[1] = '\n';
  Serial.begin(115200);
  myTransfer.begin(Serial);
}

void loop()
{
  blinkLED(2);
  delay(500);

  // send bytes
  myTransfer.txBuff[0] = str[0];
  myTransfer.sendData(1);
  delay(100);
 
  if(myTransfer.available())
  {
    blinkLED(60);
    
    // receive bytes
    byte bytes_to_read = myTransfer.bytesRead;
    for(byte i = 0; i < bytes_to_read; i++)
      str[i]strncpy(str =+ i, myTransfer.rxBuff[i];
    str[bytes_to_read] =rxBuff[i], '\0';1);
  
  }
  else if(myTransfer.status < 0)
  {
    Serial.print("ERROR: ");

    if(myTransfer.status == -1)
      Serial.println(F("CRC_ERROR"));
    else if(myTransfer.status == -2)
      Serial.println(F("PAYLOAD_ERROR"));
    else if(myTransfer.status == -3)
      Serial.println(F("STOP_BYTE_ERROR"));
  }
}
#include "SerialTransfer.h"

char str[1000];

SerialTransfer myTransfer;

void setup()
{
  str[0] = 'S';
  str[1] = '\n';
  Serial.begin(115200);
  myTransfer.begin(Serial);
}

void loop()
{

  // send bytes
  myTransfer.txBuff[0] = str[0];
  myTransfer.sendData(1);
  delay(100);
 
  if(myTransfer.available())
  {
    // receive bytes
    byte bytes_to_read = myTransfer.bytesRead;
    for(byte i = 0; i < bytes_to_read; i++)
      str[i] = myTransfer.rxBuff[i];
    str[bytes_to_read] = '\0';
  
  }
  else if(myTransfer.status < 0)
  {
    Serial.print("ERROR: ");

    if(myTransfer.status == -1)
      Serial.println(F("CRC_ERROR"));
    else if(myTransfer.status == -2)
      Serial.println(F("PAYLOAD_ERROR"));
    else if(myTransfer.status == -3)
      Serial.println(F("STOP_BYTE_ERROR"));
  }
}
#include "SerialTransfer.h"

char str[100];

SerialTransfer myTransfer;
int LED = 13;

void blinkLED(int n)
{
  for (int i = 0; i < n; i++) {
    digitalWrite(LED, HIGH);
    delay(150);
    digitalWrite(LED, LOW);
    delay(150);
  }
} 


void setup()
{
  pinMode(LED, OUTPUT);
  digitalWrite(LED, LOW);
  str[0] = 'S';
  str[1] = '\n';
  Serial.begin(115200);
  myTransfer.begin(Serial);
}

void loop()
{
  blinkLED(2);
  delay(500);

  // send bytes
  myTransfer.txBuff[0] = str[0];
  myTransfer.sendData(1);
  if(myTransfer.available())
  {
    blinkLED(60);
    
    // receive bytes
    byte bytes_to_read = myTransfer.bytesRead;
    for(byte i = 0; i < bytes_to_read; i++)
      strncpy(str + i, myTransfer.rxBuff[i], 1);

  }
  else if(myTransfer.status < 0)
  {
    Serial.print("ERROR: ");

    if(myTransfer.status == -1)
      Serial.println(F("CRC_ERROR"));
    else if(myTransfer.status == -2)
      Serial.println(F("PAYLOAD_ERROR"));
    else if(myTransfer.status == -3)
      Serial.println(F("STOP_BYTE_ERROR"));
  }
}
added 9 characters in body
Source Link

Python code import time from pySerialTransfer import pySerialTransfer as txfer

if name == 'main': try: link = txfer.SerialTransfer('/dev/cu.usbmodem14201')

link.open()
time.sleep(2) # allow some time for the Arduino to completely reset
base = time.time()

while True:
  time.sleep(0.2)
  s = '%.2f' % (time.time() - base)
  l = len(s)
  for i in range(l):
    link.txBuff[i] = s[i]

  link.send(l)

  while not link.available():
    if link.status < 0:
      print('ERROR: {}'.format(link.status))


  response = ''
  for index in range(link.bytesRead):
    response += chr(link.rxBuff[index])

  print('SENT: %s' % s)
  print('RCVD: %s' % response)

except KeyboardInterrupt: link.close()

**Arduinoimport code**time
from pySerialTransfer import pySerialTransfer as txfer

if __name__ == '__main__':
  try:
    link = txfer.SerialTransfer('/dev/cu.usbmodem14201')

    link.open()
    time.sleep(2) # allow some time for the Arduino to completely reset
    base = time.time()

    while True:
      time.sleep(0.2)
      s = '%.2f' % (time.time() - base)
      l = len(s)
      for i in range(l):
        link.txBuff[i] = s[i]

      link.send(l)

      while not link.available():
        if link.status < 0:
          print('ERROR: {}'.format(link.status))


      response = ''
      for index in range(link.bytesRead):
        response += chr(link.rxBuff[index])

      print('SENT: %s' % s)
      print('RCVD: %s' % response)

  except KeyboardInterrupt:
    link.close()

#include "SerialTransfer.h"

char str[1000];

SerialTransfer myTransfer;

void setup() { str[0] = 'S'; str[1] = '\n'; Serial.begin(115200); myTransfer.begin(Serial); }

void loop() {

// send bytes myTransfer.txBuff[0] = str[0]; myTransfer.sendData(1); delay(100);

if(myTransfer.available()) { // receive bytes byte bytes_to_read = myTransfer.bytesRead; for(byte i = 0; i < bytes_to_read; i++) str[i] = myTransfer.rxBuff[i]; str[bytes_to_read] = '\0';

} else if(myTransfer.status < 0) { Serial.print("ERROR: ");Arduino code

#include "SerialTransfer.h"

char str[1000];

SerialTransfer myTransfer;

void setup()
{
  str[0] = 'S';
  str[1] = '\n';
  Serial.begin(115200);
  myTransfer.begin(Serial);
}

void loop()
{

  // send bytes
  myTransfer.txBuff[0] = str[0];
  myTransfer.sendData(1);
  delay(100);

  if(myTransfer.available())
  {
    // receive bytes
    byte bytes_to_read = myTransfer.bytesRead;
    for(byte i = 0; i < bytes_to_read; i++)
      str[i] = myTransfer.rxBuff[i];
    str[bytes_to_read] = '\0';
  
  }
  else if(myTransfer.status < 0)
  {
    Serial.print("ERROR: ");

    if(myTransfer.status == -1)
      Serial.println(F("CRC_ERROR"));
    else if(myTransfer.status == -2)
      Serial.println(F("PAYLOAD_ERROR"));
    else if(myTransfer.status == -3)
      Serial.println(F("STOP_BYTE_ERROR"));
  }
}

} }



Thank you!

Thank you!

Python code import time from pySerialTransfer import pySerialTransfer as txfer

if name == 'main': try: link = txfer.SerialTransfer('/dev/cu.usbmodem14201')

link.open()
time.sleep(2) # allow some time for the Arduino to completely reset
base = time.time()

while True:
  time.sleep(0.2)
  s = '%.2f' % (time.time() - base)
  l = len(s)
  for i in range(l):
    link.txBuff[i] = s[i]

  link.send(l)

  while not link.available():
    if link.status < 0:
      print('ERROR: {}'.format(link.status))


  response = ''
  for index in range(link.bytesRead):
    response += chr(link.rxBuff[index])

  print('SENT: %s' % s)
  print('RCVD: %s' % response)

except KeyboardInterrupt: link.close()

**Arduino code**

#include "SerialTransfer.h"

char str[1000];

SerialTransfer myTransfer;

void setup() { str[0] = 'S'; str[1] = '\n'; Serial.begin(115200); myTransfer.begin(Serial); }

void loop() {

// send bytes myTransfer.txBuff[0] = str[0]; myTransfer.sendData(1); delay(100);

if(myTransfer.available()) { // receive bytes byte bytes_to_read = myTransfer.bytesRead; for(byte i = 0; i < bytes_to_read; i++) str[i] = myTransfer.rxBuff[i]; str[bytes_to_read] = '\0';

} else if(myTransfer.status < 0) { Serial.print("ERROR: ");

if(myTransfer.status == -1)
  Serial.println(F("CRC_ERROR"));
else if(myTransfer.status == -2)
  Serial.println(F("PAYLOAD_ERROR"));
else if(myTransfer.status == -3)
  Serial.println(F("STOP_BYTE_ERROR"));

} }



Thank you!

Python code

import time
from pySerialTransfer import pySerialTransfer as txfer

if __name__ == '__main__':
  try:
    link = txfer.SerialTransfer('/dev/cu.usbmodem14201')

    link.open()
    time.sleep(2) # allow some time for the Arduino to completely reset
    base = time.time()

    while True:
      time.sleep(0.2)
      s = '%.2f' % (time.time() - base)
      l = len(s)
      for i in range(l):
        link.txBuff[i] = s[i]

      link.send(l)

      while not link.available():
        if link.status < 0:
          print('ERROR: {}'.format(link.status))


      response = ''
      for index in range(link.bytesRead):
        response += chr(link.rxBuff[index])

      print('SENT: %s' % s)
      print('RCVD: %s' % response)

  except KeyboardInterrupt:
    link.close()

Arduino code

#include "SerialTransfer.h"

char str[1000];

SerialTransfer myTransfer;

void setup()
{
  str[0] = 'S';
  str[1] = '\n';
  Serial.begin(115200);
  myTransfer.begin(Serial);
}

void loop()
{

  // send bytes
  myTransfer.txBuff[0] = str[0];
  myTransfer.sendData(1);
  delay(100);

  if(myTransfer.available())
  {
    // receive bytes
    byte bytes_to_read = myTransfer.bytesRead;
    for(byte i = 0; i < bytes_to_read; i++)
      str[i] = myTransfer.rxBuff[i];
    str[bytes_to_read] = '\0';
  
  }
  else if(myTransfer.status < 0)
  {
    Serial.print("ERROR: ");

    if(myTransfer.status == -1)
      Serial.println(F("CRC_ERROR"));
    else if(myTransfer.status == -2)
      Serial.println(F("PAYLOAD_ERROR"));
    else if(myTransfer.status == -3)
      Serial.println(F("STOP_BYTE_ERROR"));
  }
}

Thank you!

added 2297 characters in body
Source Link

UPDATE

Thank you!Using the suggested libraries, I updated the code. The comms in both directions for simple test data are working, though I can't seem to convert the packet received by the Arduino into a string correctly. Here is the output I see from my python terminal; I'd expect to receive back the first character of what was sent (i.e.: the "0", then "1"), rather than just the initialized value of "S".

SENT: 0.20
RCVD: S
SENT: 0.41
RCVD: S
SENT: 0.61
RCVD: S
SENT: 0.82
RCVD: S
SENT: 1.02
RCVD: S
SENT: 1.23
RCVD: S
SENT: 1.43
RCVD: S
SENT: 1.64
RCVD: S

Python code import time from pySerialTransfer import pySerialTransfer as txfer

if name == 'main': try: link = txfer.SerialTransfer('/dev/cu.usbmodem14201')

link.open()
time.sleep(2) # allow some time for the Arduino to completely reset
base = time.time()

while True:
  time.sleep(0.2)
  s = '%.2f' % (time.time() - base)
  l = len(s)
  for i in range(l):
    link.txBuff[i] = s[i]

  link.send(l)

  while not link.available():
    if link.status < 0:
      print('ERROR: {}'.format(link.status))


  response = ''
  for index in range(link.bytesRead):
    response += chr(link.rxBuff[index])

  print('SENT: %s' % s)
  print('RCVD: %s' % response)

except KeyboardInterrupt: link.close()

**Arduino code**

#include "SerialTransfer.h"

char str[1000];

SerialTransfer myTransfer;

void setup() { str[0] = 'S'; str[1] = '\n'; Serial.begin(115200); myTransfer.begin(Serial); }

void loop() {

// send bytes myTransfer.txBuff[0] = str[0]; myTransfer.sendData(1); delay(100);

if(myTransfer.available()) { // receive bytes byte bytes_to_read = myTransfer.bytesRead; for(byte i = 0; i < bytes_to_read; i++) str[i] = myTransfer.rxBuff[i]; str[bytes_to_read] = '\0';

} else if(myTransfer.status < 0) { Serial.print("ERROR: ");

if(myTransfer.status == -1)
  Serial.println(F("CRC_ERROR"));
else if(myTransfer.status == -2)
  Serial.println(F("PAYLOAD_ERROR"));
else if(myTransfer.status == -3)
  Serial.println(F("STOP_BYTE_ERROR"));

} }



Thank you!

Thank you!

UPDATE

Using the suggested libraries, I updated the code. The comms in both directions for simple test data are working, though I can't seem to convert the packet received by the Arduino into a string correctly. Here is the output I see from my python terminal; I'd expect to receive back the first character of what was sent (i.e.: the "0", then "1"), rather than just the initialized value of "S".

SENT: 0.20
RCVD: S
SENT: 0.41
RCVD: S
SENT: 0.61
RCVD: S
SENT: 0.82
RCVD: S
SENT: 1.02
RCVD: S
SENT: 1.23
RCVD: S
SENT: 1.43
RCVD: S
SENT: 1.64
RCVD: S

Python code import time from pySerialTransfer import pySerialTransfer as txfer

if name == 'main': try: link = txfer.SerialTransfer('/dev/cu.usbmodem14201')

link.open()
time.sleep(2) # allow some time for the Arduino to completely reset
base = time.time()

while True:
  time.sleep(0.2)
  s = '%.2f' % (time.time() - base)
  l = len(s)
  for i in range(l):
    link.txBuff[i] = s[i]

  link.send(l)

  while not link.available():
    if link.status < 0:
      print('ERROR: {}'.format(link.status))


  response = ''
  for index in range(link.bytesRead):
    response += chr(link.rxBuff[index])

  print('SENT: %s' % s)
  print('RCVD: %s' % response)

except KeyboardInterrupt: link.close()

**Arduino code**

#include "SerialTransfer.h"

char str[1000];

SerialTransfer myTransfer;

void setup() { str[0] = 'S'; str[1] = '\n'; Serial.begin(115200); myTransfer.begin(Serial); }

void loop() {

// send bytes myTransfer.txBuff[0] = str[0]; myTransfer.sendData(1); delay(100);

if(myTransfer.available()) { // receive bytes byte bytes_to_read = myTransfer.bytesRead; for(byte i = 0; i < bytes_to_read; i++) str[i] = myTransfer.rxBuff[i]; str[bytes_to_read] = '\0';

} else if(myTransfer.status < 0) { Serial.print("ERROR: ");

if(myTransfer.status == -1)
  Serial.println(F("CRC_ERROR"));
else if(myTransfer.status == -2)
  Serial.println(F("PAYLOAD_ERROR"));
else if(myTransfer.status == -3)
  Serial.println(F("STOP_BYTE_ERROR"));

} }



Thank you!
Source Link
Loading