Я отправляю текстовый файл из моего Excel на Raspberry Pi, где Pi прочитает этот файл и получит входные данные внутри. Ввод - только одна строка, и это простое число и ничего больше (40,38 и т. Д.)
Когда я запускаю этот макрос, я прекрасно вижу входной файл на моем ПК, но когда я открываю его внутри Pi, он изменяется, например:
Входной файл на моем ПК:
65
Входной файл в Raspberry:
ÿþ6
Как я могу убедиться, что этот номер отправляется Пи, как есть. Или как мне декодировать это так, чтобы мой скрипт на python мог понять. Я не буду использовать десятичные числа с этим числом, и не имеет значения, будет ли оно отправлено в виде строки, поскольку я могу позже разобрать его в своем коде Python.
Ниже мой Макрос Excel
Sub Send()
Dim sleeptime As String
sleeptime = InputBox("Duration between each reading in seconds?")
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Dim Fileout As Object
Set Fileout = fso.CreateTextFile("C:\Users\xx\Desktop\VBA\input.txt", True, True)
Fileout.Write sleeptime
Fileout.Close
Set fso = Nothing
Set Fileout = Nothing
Const cstrSftp As String = """C:\Program Files\PuTTY\pscp.exe"""
Dim strCommand As String
Dim pUser As String
Dim pPass As String
Dim pHost As String
Dim pFile As String
Dim pRemotePath As String
pUser = "pi" '//user on remote system
pPass = "xx" '//user's password on remote system
pHost = "192.168.x.xx" '//ip address of remote system
pFile = "C:\Users\xx\Desktop\VBA\input.txt" '//file to transfer
pRemotePath = "/home/pi/Temp_Codes" '//directory where file will be transferred to
strCommand = cstrSftp & " -sftp -l " & pUser & " -pw " & pPass & _
" " & pFile & " " & pHost & ":" & pRemotePath
Debug.Print strCommand
Shell strCommand, 0 ' vbHide
End Sub
И это строки внутри скрипта моего Raspberry Pi, где я использую этот входной файл. Позже я использую это значение времени сна внутри time.sleep.
with open('input.txt', 'r') as myfile:
sleeptime = myfile.read()
sleeptime = float(sleeptime.strip())
Вот простой код, который я запускаю для проверки этой кодировки:
#!/usr/bin/env python
import io
with io.open('input.txt', 'r', encoding='utf-8-sig') as myfile:
sleeptime = myfile.read()
sleeptime = float(sleeptime.strip())
Это ошибка, которую я получаю до сих пор.
pi@raspberrypi:~/Temp_Codes $ python try.py
Traceback (most recent call last):
File "try.py", line 6, in <module>
sleeptime = myfile.read()
File "/usr/lib/python2.7/codecs.py", line 314, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
File "/usr/lib/python2.7/encodings/utf_8_sig.py", line 66, in _buffer_decode
return codecs.utf_8_decode(input, errors, final)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xff in position 0: invalid start byte