scilab

Тема в разделе "Arduino & Shields", создана пользователем Artclonic, 22 ноя 2018.

  1. Artclonic

    Artclonic Гик

    Добрый вечер, подскажите, кто ни будь ардуинку связывал с scilab ? Не могу настроить....
    Выдает ошибку...
    Код (C++):
    h=openserial(13,"9600,n,8,1")
    !--error 999
    TCL_EvalStr,  at line 1
        couldn't open "COM13:": no such file or directory
        while executing
    "open COM13: r+"
        invoked from within
    "set porthandle [open COM13: r+]"
    at line      17 of function openserial called by :
    h=openserial(13,"9600,n,8,1")
    Прошу помощи если кто сталкивался
     
  2. AlessandrIT

    AlessandrIT Гик

    Товарищ, а вы уверены что ком порт 13ый у вас вообще есть?Программа ругается будто его нету!
     
  3. ZAZ-965

    ZAZ-965 Гуру

    Попробуйте в Диспетчере устройств в свойствах COM13 порта изменить его имя на любой свободный из диапазона COM1-COM9
     
  4. AlessandrIT

    AlessandrIT Гик

    Да и строка "h=openserial(13,"9600,n,8,1")" заставляет подозревать рукожопый код некоторые досадные ошибки
     
  5. Artclonic

    Artclonic Гик

    Я настроил ардуинку уно на порт номер 11. монитором порта проверил данные идут
    перевыбрал порт в программе с 13 на 11...ошибка...
    Код (C++):
    ->exec('C:\Users\Антон\Downloads\Scilab\ScilabArduino_Temp_v0.2.sce', -1)
    !--error 999
    TCL_EvalStr,  at line 1
        couldn't open "COM11:": no such file or directory
        while executing
    "open COM11: r+"
        invoked from within
    "set porthandle [open COM11: r+]"
    at line      17 of function openserial called by :
        %serial_port=openserial(port_name,"9600,n,8,13");
    at line     130 of exec file called by :  
    \ScilabArduino_Temp_v0.2.sce'
    , -1
     
  6. Artclonic

    Artclonic Гик

    Другая версия кода (номер1)
    Код (C++):

    -->exec('C:\Users\Киселев Антон\Downloads\Scilab\v.0.1\ScilabArduino_Temp_v0.1.sce', -1)
    !--error 999
    TCL_EvalStr,  at line 1
        couldn't open "COM11:": no such file or directory
        while executing
    "open COM11: r+"
        invoked from within
    "set porthandle [open COM11: r+]"
    at line      17 of function openserial called by :
        %serial_port=openserial(port_name,"9600,n,8,1");
    at line     120 of exec file called by :  
    \ScilabArduino_Temp_v0.1.sce'
    , -1
     
  7. ZAZ-965

    ZAZ-965 Гуру

  8. Artclonic

    Artclonic Гик

    Ни чего не понял....Я далеко не профи..
     
  9. Artclonic

    Artclonic Гик

    Да,понял! постик не увидел.. Заменид на свободный порт 2. На порт уже не ругается.. но
    Код (C++):
    -->exec('C:\Users\ Антон\Downloads\Scilab\v.0.1\ScilabArduino_Temp_v0.1.sce', -1)
    !--error 999
    Неизвестное свойство: dockable.
    at line     110 of function figure called by :
    f=figure("dockable","off");
    at line     135 of exec file called by :  
    \ScilabArduino_Temp_v0.1.sce', -1
     
  10. ZAZ-965

    ZAZ-965 Гуру

    Диспетчер устройств - порты (COM LPT) - свойства вашего COM порта - закладка Параметры порта - кнопка Дополнительно - внизу в выпадающем списке выбираете, например, COM5.
     
  11. Artclonic

    Artclonic Гик

    С портами разобрался... ошибка теперь вот
    Код (C++):
    Неизвестное свойство: dockable.
    at line     110 of function figure called by :
    f=figure("dockable","off");
    at line     135 of exec file called by :
    \ScilabArduino_Temp_v0.1.sce', -1
     
  12. ZAZ-965

    ZAZ-965 Гуру

    Scilab какой версии?
     
  13. Artclonic

    Artclonic Гик

    5.4.1 сейчас
    Был 5.5 - яспециально переустоновил более раннюю, потоому что не работало...
    Переустоновить на шестую?
     
  14. ZAZ-965

    ZAZ-965 Гуру

    Scilab 5.5.0 - "dockable" property added
     
  15. Artclonic

    Artclonic Гик

    Понял, добавлены, свойства плавующие! - Переустанавливаю!!! на 5,5.0
     
  16. Artclonic

    Artclonic Гик

    Завел! Спасибо!!! На сегодня хорош целый день осваивал... почти с нуля можно сказать...
     
  17. Artclonic

    Artclonic Гик

    Добрый день. На базе готового примера хочу создать свой простейший график с двумя параметрами.. Своял код, который в порт посылает два значения через запятую..
    Вот с монитора порта:
    Код (C++):
    35,33
    36,34
    35,35
    36,36
    35,37
    36,38
     
    Далее в Scilab (из готового примера раздел отвечающий за COM порт)
    Код (C++):
    ind = x_choose(["RS-232" ;"USB"; "Ethernet" ;"Wireless"],["Please select the type of communication interface: ";"Just double-click on its name. "],"Cancel");
    if ind==0 then
        msg=_("ERORR: No types of communication interfaces has been chosen. ");
        messagebox(msg, "ERROR", "error");
        error(msg);
        return;
    elseif ind==2
        if (getos() == "Windows") then
            if ~(atomsIsInstalled('serial')) then
                msg=_("ERROR: A serial communication toolbox must be installed.");
                messagebox(msg, "Error", "error");
                error(msg);
                return;
            else
                flag=1;
            end
        elseif  (getos() == "Linux") then
            if ~(atomsIsInstalled('serialport')) & ~(atomsIsInstalled('serial')) then
                msg=_("ERROR: A serial communication toolbox must be installed.");
                messagebox(msg, "Error", "error");
                error(msg);
                return;
            elseif (atomsIsInstalled('serialport')) & (atomsIsInstalled('serial')) then
                stoolbx = x_choose(['serialport';'serial' ],"Which serial ...
                commiunication toolbox you prefer to use? "
    ," Cancel ")
                if  stoolbx==1 then
                    flag=2;
                elseif stoolbx==2 then
                    flag=3;
                else
                    msg=_("ERROR: No serial toolbox has been chosen. ");
                    messagebox(msg, "Error", "error");
                    error(msg);
                    return;
                end
            elseif (atomsIsInstalled('serialport')) then
                flag=2;
            elseif  (atomsIsInstalled('serial')) then
                flag=3;  
            end
        else
            msg=_(["WARNING: This program has been tested and works under Gnu/Linux ...
            and Windows."
    ; "On other platforms you may need modify this script. "])
            messagebox(msg, "WARNING", "warning");
            warning(msg);
            return;
        end
    else
        error("Not possible yet.");
        return;
    end
    //
    График записывается в таком виде?
    Код (C++):

    // Эти данные с порта первое значение X, через запятую Y
    x=
    y=
    plot(x,y,'X','Y','');
     
    Как я понимаю надо назначить переменные X и Y
    Присвоить им значения с порта...

    Прошу помощи в решении моей задачки...
     
    Последнее редактирование: 23 ноя 2018
  18. Artclonic

    Artclonic Гик

    Пошел другим путем ...А именно с работой с портом.
    Код (C++):
    sp = openserial(2,"9600,n,8,1")
    for l=1:1000
    answer = sp.readln();
    answery = strtod(answer);
    plot2d3('gnn',l,answery);
    drawnow();
    // sleep(1000);
    end
    sp.close();
     
    Выдает ошибку
    Код (C++):
    -->exec('C:\Users\Антон\Downloads\SSS.sci', -1)
    answer = sp.readln();
                         !--error 21
    Неправильный индекс.
    at line       3 of exec file called by :  
    exec('C:\Users\ Антон\Downloads\SSS.sci', -1)
     
  19. Artclonic

    Artclonic Гик

    Исправил
    Код (C++):
    answer = sp.readln();
    На
    Код (C++):
    answer = readserial(sp)
    И вроде заработало , что то на графике задвигалось!!!! Будем осваивать дале...
    Теперь хочу график из двух переменных
     
  20. Artclonic

    Artclonic Гик

    чтение с порта имеет вид
    Код (C++):
    buf = readserial(h [,n])
    Ни как не соображу, как присвоить переменную из порта к первому значению и как присвоить другую переменную второму значению, который через запятую...
    Вот что пишется об "n":
    Количество символов для чтения. Если этот параметр опущен, извлекаются все символы, находящиеся в буфере ввода (используется серийный статус).
    NB: если входной буфер содержит менее n символов, а режим блокировки openserial имеет значение true, readserial зависает до тех пор, пока n не будет получено (это может длиться вечно).
    Помогите разбить данные с порта...