okay so my situation is that i am working an avr chip which is the atmega 328p and what i want to do is i want to lets say have a user input in python lets say the user types in a string and from there i want my avr c code to interpret the code.
The reason i am doing this is because i am making a basic cnc gui so the user will input a stepper motor axis like x y or z then the direction "-" or "+".
Then a distance which is a number into python and then from python i want to send this info to the avr-c code which will then use the info to control steppers.
I want to avoid using the default serial communication thing in avr c because it will be harder to do since the user will input strings like "x-20 y+10" and etc.
It is much easier to use python to interpret the text then to use avr-c so how would i go about doing this
okay so after much confusion and researching I came up with a code based on the syntax of pyserial as well as the struct modules, here is the code:
import serial import struct import binascii #Function to Initialize the Serial Port def init_serial(): global ser #Must be declared in Each Function ser = serial.Serial() ser.baudrate = 9600 ser.port = '/dev/ttyACM0' #com port of avr ser.timeout = 10 ser.open() #Opens SerialPort # print port open or closed if ser.isOpen(): print 'Open: ' + ser.portstr init_serial() values = (1) s = struct.Struct('I') packed_data = s.pack(*values) ser.write(packed_data) #Writes to the SerialPort while 1: bytes = ser.readline() #Read from Serial Port packed_data = binascii.unhexlify(bytes) s = struct.Struct('I') unpacked_data = s.unpack(packed_data) print 'You sent: ', unpacked_data #Print What is Read from Port #Ctrl+C to Close Python Window
Please inform me if I am doing something wrong or right, or if this code work actually work at all, if so this is the python side of the transmission of python data to avr-c, how would I then handle the avr-c side of this communication with python over serial communication?