在树莓派上使用lua脚本在串行端口上读写

时间:2020-09-17 13:47:54

标签: lua serial-port

我目前正在从事一个旨在通过Raspberry pi4控制RS232设备的项目。我被其他软件强迫使用lua脚本,即使我已经用Python编写了代码,我也从未用lua编码过……我已经在google上广泛搜索了答案,但没有找到任何帮助我。

我希望我的树莓派打开COM端口,然后通过该端口读取和发送消息。

我尝试过the lua user wikiThis post on stackoverflow (read and write on windows),但是都不能应用于树莓派。

如果有人可以帮助,那就太好了!

如果可以帮助您,这是我在python中的代码。

import serial

    def convertisseur(chemin):

        Tableau = []
        f = open(chemin)
        for row in f:
            Tableau.append(row)
        f.close            
        return (Tableau)


    def statut(ser):
        ser.write(bytearray([0X53,0X07,0X01,0X01,0X41,0X60,0X00,0X73,0X45]));
        lecture=ser.readline()
        print(lecture);    

return()


    def main():
            ser = serial.Serial('COM3', 115200, timeout=1)
            ser.close()
            ser.open()
            Code=convertisseur('C:/Users/Ello/Desktop/CodePosition.txt')
            statut(ser) 
            ser.write(bytearray([0X53,0X09,0X01,0X02,0X40,0X60,0X00,0X06,0X00,0X2C,0X45]));        
            ser.readline()
            
            ser.write(bytearray([0X53,0X09,0X01,0X02,0X40,0X60,0X00,0X0F,0X00,0X25,0X45,0X53,0X08,0X01,0X02,0X60,0X60,0X00,0X01,0XF5,0X45]));
            ser.readline()
            statut(ser)

  
            print('Engine move in cm ? - for trigo, STOP to stop')
            Speed = input()
            while Speed != "STOP":
                speed = int(Speed)
                if speed > 38:
                    speed = 38
                if speed < -37:
                    speed = -37
            
                speed = round(abs((speed-38)))
                ser.write(bytearray(int(i, 16) for i in Code[speed-1].split(",")))
                ser.write(bytearray([0X53,0X09,0X01,0X02,0X40,0X60,0X00,0X0F,0X00,0X25,0X45,0X53,0X09,0X01,0X02,0X40,0X60,0X00,0X7F,0X00,0X55,0X45]));
                ser.readline()
                statut(ser)
                Speed = input()
    
            print("Fin du programme, fermeture du port, passage du moteur sur OFF")
            ser.write(bytearray(int(i, 16) for i in Code[60].split(",")))
            statut(ser)
            ser.close()
            return   0

0 个答案:

没有答案
相关问题