Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » C#

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

Rabbit_Vegitc

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
День добрый.  
Такая проблема.  
По программе. Создал проект с формами. Кроме стандартной вкладки и формы создал ещё класс в отдельной вкладке. В итоге: frmCOP.cs - форма с текст боксами и кнопками, frmCOP.cs класс где пишется функционал для текст боксов и кнопок, SCIEC625_CLIENT.cs класс через который идёт обращение к dll (которую добавил в проектSCIEC625_CLIENT.dll). Теперь по железкам есть КОП порт с 1 его стороны это порт как у современных принтеров, с другой стороны это GPIB порт. К этому Коп порту идёт диск с указанной выше .dll и прочей писаниной, что куда втыкать. Так же присутствует фазометр, железка тупая, к ней нет ни ПО, ни дров, ни .dll стиль работы таков выводит инфу на табло и на свой GPIB порт (единственный выход в фазометре через который можно его с ПК подружить). Так смысл и есть подружить фазометр через КОП порт с ПК.  
Мои действия я разделил код на 5 частей.
1. инициализация порта для дальнейшей работы.
2. включение дистанционного управления (чтоб считывать с GPIB порта фазометра инфу).
3 послать пробный байт в фазометр
4. получить байт с фазометра
5. приём потока информации в массив
Ну собсно и дальнейшая обработка. Получились только 1 и 2 пункт. Прога составлена в стиле (пропущу инициализацию и включение дистанционного управления):  
в классе SCIEC625_CLIENT.cs пишу:
 
//extern "C" __declspec(dllexport)int atn1();       // Включение командного режима
[DllImport("SCIEC625_CLIENT.dll")]
public static extern int atn1();                             // Включение командного режима
 
//extern "C" __declspec(dllexport)int mla(BYTE number); // Назначает прибор приёмником
[DllImport("SCIEC625_CLIENT.dll")]
public static extern int mla(byte t);                                 // Назначает прибор приёмником
 
//extern "C" __declspec(dllexport)void mtac();    // Назначение платы источником
[DllImport("SCIEC625_CLIENT.dll")]
public static extern int mtac();                            // Назначение платы источником
 
//extern "C" __declspec(dllexport)int transb (BYTE byte,  unsigned int t); // Передача байта в прибор  
//[DllImport("SCIEC625_CLIENT.dll")]
//public static extern int transb(byte b, uint t);        // Передача байта в прибор
 
//extern "C" __declspec(dllexport)int    atn0();       // Сброс командного режима
[DllImport("SCIEC625_CLIENT.dll")]
public static extern int atn0();                               // Сброс командного режима
 
В классе frmCOP.cs пишу:
        private void отправка_байта_в _прибор(object sender, EventArgs e)
        {  
            tbOutput2.Text += "Включение командного режима = ";
            tbOutput2.Text += SCIEC625_CLIENT.atn1().ToString();
            tbOutput2.Text += Environment.NewLine;
 
            tbOutput2.Text += "Назначает прибор приёмником при обмене информацией = ";
            //tbOutput2.Text += SCIEC625_CLIENT.mla().ToString();
            tbOutput2.Text += Environment.NewLine;
 
            tbOutput2.Text += "Назначение платы источником при определении состояния =";
            tbOutput2.Text += SCIEC625_CLIENT.mtac().ToString();  
            tbOutput2.Text += Environment.NewLine;
 
            //tbOutput5.Text += "Сброс командного режима = ";
            //tbOutput5.Text += SCIEC625_CLIENT.transb().ToString();
            //tbOutput5.Text += Environment.NewLine;
 
            tbOutput2.Text += "Сброс командного режима = ";
            tbOutput2.Text += SCIEC625_CLIENT.atn0().ToString();
            tbOutput2.Text += Environment.NewLine;
        }
 
Сразу видно что закоментины:
//tbOutput2.Text += SCIEC625_CLIENT.mla().ToString();
//tbOutput5.Text += SCIEC625_CLIENT.transb().ToString();
Скорее всего вопрос маниакально тупой НО в классе SCIEC625_CLIENT.cs  
mla(byte t); а transb(byte b, uint t);  
а что с ними делать (c byte t и byteb, uint t) в классе frmCOP.cs как то не особо понятно.

Всего записей: 28 | Зарегистр. 04-09-2012 | Отправлено: 09:29 23-04-2013 | Исправлено: Rabbit_Vegitc, 09:34 23-04-2013
ne_viens

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Это надо в SDK фазомера читать, как им управлять и какой у него протокол обмена данными.

Всего записей: 1530 | Зарегистр. 01-11-2004 | Отправлено: 12:18 23-04-2013
Rabbit_Vegitc

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
)))
Ранее поддерживали одну программу писаную на билдере "лохматом", когда я в школе учился делали примерно тоже самое, инициализация, включение ДУ, и снимали сначала 100 байт потом затирали их и снимали 60 байт. В коде нет ничего про фазометр только как его сделать принимающим и отдающим инфу. и то эти функции через КОП порт. Фазометр с меткой СССР не каждый в пользователь форума ходить умел когда с него измерения снимали))))

Всего записей: 28 | Зарегистр. 04-09-2012 | Отправлено: 19:09 23-04-2013
ne_viens

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Тогда надо смотреть, как лохматая прога с устройством работает.
КОП порт- это COM чтоли?
В природе есть прога- сниффер COM порта.

Всего записей: 1530 | Зарегистр. 01-11-2004 | Отправлено: 19:24 23-04-2013
Rabbit_Vegitc

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
нет именно Коп порт) скинуть код?

Всего записей: 28 | Зарегистр. 04-09-2012 | Отправлено: 21:11 23-04-2013
ne_viens

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
http://en.wikipedia.org/wiki/IEEE-488 этот, чтоли?! Афигеть!
 
Дллка штатная имеется, или ее тоже написать надо?

Всего записей: 1530 | Зарегистр. 01-11-2004 | Отправлено: 21:50 23-04-2013
Rabbit_Vegitc

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dll только к КОМ порту к нему же дрова и документы к использованию к фазометру ничего. только книга

Всего записей: 28 | Зарегистр. 04-09-2012 | Отправлено: 21:58 23-04-2013
Rabbit_Vegitc

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ne_viens дадада))
http://en.wikipedia.org/wiki/IEEE-488 порт на фазометре от него шнур к КОП контроллеру (так правильнее его называть) у которого с 1 стороны http://en.wikipedia.org/wiki/IEEE-488 с другой как у новых принтеров и от этого контроллера уже USB в компутер. Dll только к этому Коп контроллеру и всё телодвижения относительно фазометра делать его принимающим или отдающим информацию только по этому коп контроллеру.
сам в шоке в какой я шоколад попал))  
а коп порт вот он http://www.actech.ru/productions/serial/kop.shtml это который "СК КОП LPT, СК КОП USB: выполнены как внешние устройства, подключаются к компьютеру через порт принтера или USB. Размер: 162 ´ 76 ´ 44 мм." 3 по счёту

Всего записей: 28 | Зарегистр. 04-09-2012 | Отправлено: 09:56 24-04-2013 | Исправлено: Rabbit_Vegitc, 09:58 24-04-2013
ne_viens

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всёравно SDK нужен будет. Даже 2- один к контроллеру КОП (описание функций длл), второй к фазометру для интерпретации отдаваемых им данных. Хотя бы бумажный сдк. Ещё IEEE-488 можно почитать.
 
Или загрузить в OllyDbg лохматую прогу и посмотреть, что и как она посылает и принимает из устройства. Для использования в хирургических роботах и АЭС этот вариант, конечно, не сойдёт.

Всего записей: 1530 | Зарегистр. 01-11-2004 | Отправлено: 10:40 24-04-2013
Rabbit_Vegitc

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
к контроллеру КОП есть описание функций к фазометру только книжка что то про низкоуровневое программирование символлами) OllyDbg - что то вроде декомпилятора?

Всего записей: 28 | Зарегистр. 04-09-2012 | Отправлено: 11:27 24-04-2013
XPEHOMETP

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Rabbit_Vegitc

Цитата:
OllyDbg - что то вроде декомпилятора?

Нет. Дебаггер. Среднего уровня продвинутости. Для использования требует опыта и навыков. У меня вот терпения на него не хватило.

Всего записей: 2485 | Зарегистр. 21-06-2005 | Отправлено: 12:44 24-04-2013
Rabbit_Vegitc

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
в итоге как всегда ничего)))) пичаль

Всего записей: 28 | Зарегистр. 04-09-2012 | Отправлено: 15:36 24-04-2013
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » C#


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru