Есть плата Melzi - управляет 3d принтером. Примерно такая:http://reprap.org/wiki/Melzi
Взял synaser. Подключил. Synaser вроде её(плату видит), по крайней мере COM порт определяет.
- Код: Выделить всё
- ser:=TBlockserial.Create;
 ser.RaiseExcept:=false;
 ser.Connect('com3');
 if ser.InstanceActive then
 begin
 ser.Config(115200,8,'N',SB1,false,false);
 ser.SendString('G21 X5 Y5 F0.2');
 a:=ser.RecvString(100);
 Memo1.Lines.Add(a);
 a:=ser.RecvPacket(1000);
 Memo1.Lines.Add(a);
 Memo1.Lines.Add(ser.Device+': '+IntToStr(ser.LastError)+'-'+ser.LastErrorDesc);
 end;
 ser.Free;
В мемо выводится вот это:
- Код: Выделить всё
- Memo1
 .COM3: 9997-Timeout during operation
Вопросы:
 Как узнать команды, которые нужно отправлять плате Melzi, чтобы активировать моторы и т.д.?
 Как узнать команды, которые нужно отправлять плате Melzi, чтобы активировать моторы и т.д.? Можно ли список возможных команд получить от самой платы?
 Можно ли список возможных команд получить от самой платы? Как правильно отправлять команды таким устройствам?
 Как правильно отправлять команды таким устройствам?Заранее благодарен всем и каждому, за любую полезную информацию.
.
Добавлено спустя 15 часов 7 минут 36 секунд:
На другом форуме мне сказали что, плате Melzi - нужно отправлять G-code.
G-code - это очень простой язык, и я собственно пытался отправить плате именно G-code.
Вот он: G21 X5 Y5 F0.2. По идее моторы должны были активироваться и переместиться в позицию Х=5мм У=5мм со скоростью 0.2.
Но ничего не происходит... Я пытался послать G-code c помощью ser.SendString (пример отправки в первой записи).
Соответственно я неправильно посылаю команды...
Я никогда не программировал для внешних устройств и не знаю как это должно быть.
Человек написал, что команды G-code можно отправлять также и через терминал и всё должно работать...
Спасите помогите ПОЖАЛУЙСТА
 
 Мне бы только крохотный рабочий пример, который отправит например такую G21 X5 Y5 F0.2 команду плате и
чтобы плата её выполнила, остальное безусловно проще, т.к. G-code - очень прост в идентификации.
прлииииз...
.
Добавлено спустя 2 часа 8 минут 43 секунды:
Ура! - устройство ответило, что всё хорошо,
нужно было добавить CR/LF в описании synaser узрел (возможно кому пригодится).
- Код: Выделить всё
- запрос такой:
 ser.Config(115200,8,'N',SB1,false,false);
 ser.SendString('G21 X5 Y5 F0.2'+#13);
 a:=ser.RecvPacket(1000);
 Memo1.Lines.Add(a);
 Memo1.Lines.Add(ser.Device+': '+IntToStr(ser.LastError)+'-'+ser.LastErrorDesc);
 ответ такой:
 Memo1
 ok
 \.COM3: 0-OK
Но девайс ответил только ОК и что ошибок нет...
Но с места ничего не сдвинулось, а должны были моторы заработать... наверное...
Соответственно вопрос ещё в силе...
Добавлено спустя 31 минуту 12 секунд:
Всё заработало, я неправильно вводил G-code.
Вот правильный запрос с ним всё работает, если кому понадобится:
- Код: Выделить всё
- ser.SendString('%'+#13);// начало программы
 ser.SendString('G90 G21'+#13); //установить миллиметры
 ser.SendString('G1 X5 Y5 Z5 F0.2'+#13); // переместить туда-то с такой-то скоростью
 ser.SendString('M30'+#13);// конец программы
Сам с собой разговариваю... дожили...
Всем хорошего настроения!
.



