Member 10274254 Ответов: 2

Я хочу открыть файл csv/txt и проанализировать каждую строку по мере ее чтения. Vb.net GRBL


Фон:
В настоящее время я работаю над проектом по внесению изменений в Панель Grbl GUI, используемую для управления небольшим фрезерным станком с ЧПУ.
Приложение написано на языке VS vb.net и в настоящее время имеет возможность считывать файл в datagrid. Я пытался с тем небольшим программистским интеллектом, который у меня есть, найти способ поиска определенных команд при загрузке csv-файла.
пример файла txt/csv выглядит следующим образом (Gcode)
( T204 : 7.0 )
G21 G90
G0 Z20.0
T204 M6 (Part1\Pocket1\7.00mm 2 flute End Mill\7.0)
( Pocket1 )
G17
M3 S1000
G0 X23.6 Y23.6
G0 Z11.0
G1 F300.0 Z9.6
G1 F260.0 Y26.4
G1 X26.4
G1 Y23.6
G1 X23.6
G1 F300.0 X22.2
G1 F260.0 Y27.8
G1 X27.8


В графическом интерфейсе где читается T я хочу создать флаг для сохранения номера строки
так что, когда код запускается из datagrid и отправляется в контроллер grbl - когда помеченная строка видна ie T*** (например, T204 a tool change to tool 204), я могу запустить макрос внутри графического интерфейса перед отправкой следующей строки из datagrid в grbl.
если бы я мог добавить другие флаги к разбору, то жизнь была бы чудесной. Ie G83-это консервированный цикл для сверления отверстий peck, поэтому помечение его события и запуск аналогичного макроса позволили бы расширить панель Grbl, чтобы обеспечить гораздо большую функциональность.

Что я уже пробовал:

Я думаю, что спрашиваю, Как разобрать файл txt/csv с командными строками, подобными приведенным выше, ища определенные события и будучи в состоянии сделать с ними некоторые трюки.
Релизы · gerritv/Grbl-панель · GitHub[^]
Страшно то, что Геррит знает, что я путаюсь с его кодом - он на пенсии, и я не хочу слишком беспокоить его.

Прошивка контроллера GRBL с открытым исходным кодом ограничена тем, что он может делать в отношении команд GCode, и я пытаюсь добавить дополнительные функции, написав макросы, чтобы заполнить пробелы, такие как смена инструмента и консервированные циклы станка, такие как сверление.

GitHub - gnea/grbl: встроенный высокопроизводительный анализатор g-кода и фрезерный контроллер с ЧПУ с открытым исходным кодом, написанный на оптимизированном языке C, который будет работать на прямом Arduino[^]

короче говоря, считывайте в файле csv/txt строку за строкой, чтобы определенные команды можно было отфильтровать и зарезервировать в массиве, чтобы блок кода можно было запустить вместо них, когда код отправляется из datagrid в контроллер GRBL cnc.

2 Ответов

Рейтинг:
2

Richard MacCutchan

Ваш файл-это чистый текст, а не csv, поэтому он нуждается в пользовательском разборе на основе структуры данных. Чтение файла в VB.NET это довольно просто с помощью Класс StreamReader (System.IO) | Microsoft Docs[^Затем ваш код должен прочитать каждую строку и изучить содержимое, чтобы решить, что делать дальше. Возможно, Вам нужно изучить проект GitHub более подробно, чтобы увидеть, как он может быть адаптирован к вашим потребностям.


Member 10274254

Спасибо Ричард,
Я перешел по ссылке и обнаружил, что помеченная ссылка предназначена для C#. Не желая подводить сторону я искал пример vb и наткнулся на него

http://www.vbforums.com/showthread.php?654051-RESOLVED-IO-StreamReader-amp-Replace-using-up-resources

Итак, теперь следуем потоку и заглядываем в строковый конструктор

Richard MacCutchan

Прямо под главным меню на этой странице есть выпадающее меню (в настоящее время выбранное для C#), которое позволяет вам переключиться на VB. К сожалению, это не очевидно, если вы не посмотрите внимательно.

Member 10274254

Спасибо Ричард,
Я должен был смотреть внимательнее, мой мозг застрял в нейтральном положении.
Я начал понимать, что visual studio/microsoft структурировали VB и c#, чтобы быть довольно похожими тезисами, так что это не выходит за рамки способности понять, что делает код. проблема в том, что я был любителем кодирования в VB6 и Arduino IDE c#, оба с собственной ограниченной простотой по сравнению с реальным материалом.
Ваша помощь очень ценится, большое спасибо

Рейтинг:
0

RickZeeland

Примерный пример, который вам нужно будет уточнить:

Dim lines As List(Of String)
Dim toolcommands As List(Of String) = New List(Of String)

lines = File.ReadLines("CNC.txt").ToList

For Each line As String In lines
    Console.WriteLine(line)

    If line.StartsWith("T") Then
        Console.WriteLine("Tool change -------------------")
        toolcommands.Add(line)
    End If
Next

For i As Integer = lines.Count - 1 To 0 Step -1
    If lines(i).StartsWith("T") Then
        lines.RemoveAt(i)
    End If
Next

Console.WriteLine("commands count = " & toolcommands.Count)


Member 10274254

большое спасибо Рик, это аналогичная структура тому, что есть в коде Gerits, я посмотрю и посмотрю, работает ли ваше предложение для меня, и сообщу об этом - также изучая решение 2, чтобы увидеть, смогу ли я лучше понять оба метода кода и почувствовать, какой из них будет работать лучше всего в панели GRBL