Глядя на openserial.sci
из Serial Communication Toolbox for Scilab репозиторий,
function h=openserial(p,smode,translation,handshake,xchar,timeout)
//port name
if ~exists("p","local") then p=1; end
if type(p)==1 | type(p)==8 then
if p<=0 then error("port number must be greater than zero"); end
if getos() == "Windows" then
port="COM"+string(p)+":"
else
port="/dev/ttyS"+string(p-1)
end
elseif type(p)==10
port=p
else
error("port to open must be either a number or a string")
end
Порт всегда установлен на /dev/ttyS<PORT_NUMBER>
. Таким образом, в ваших локальных файлах инструментов вы можете попробовать отредактировать следующие строки в openserial.sci
примерно так:
function h=openserial(p,smode,translation,handshake,xchar,timeout)
//port name
if ~exists("p","local") then p=1; end
if type(p)==1 | type(p)==8 then
if p<=0 then error("port number must be greater than zero"); end
if getos() == "Windows" then
port="COM"+string(p)+":"
else
port="/dev/ttyS"+string(p-1)
end
elseif type(p)==10
port=p
elseif type(p)=="ACM0"
port="/dev/ttyACM0"
else
error("port to open must be either a number or a string")
end
а затем вызовите openserial следующим образом:
h=openserial("ACM0","9600,n,8,1)
Также убедитесь, что /dev/ttyACM0
является правильным узлом устройства. Это пример вывода из ls -l
, который вы можете запустить для подтверждения:
$ ls -l /dev/ttyACM0
crw-rw---- 1 root dialout 188, 0 Mar 12 18:16 /dev/ttyACM0
Если вы получаете сообщение об ошибке при открытии последовательного порта в качестве обычного пользователя, вы можете добавить себя в правильную группу. Исходя из приведенного выше примера, имя группы dialout
в моем дистрибутиве openSUSE. У вас оно может отличаться, поэтому замените это имя группы в следующей команде:
sudo usermod -a -G dialout <USER_NAME>
person
Tuxdude
schedule
20.03.2013