Проблемы с MiniOS7 |
Ответить | Страница 123> |
Автор | |
Новичок Присоединился: 28 Декабрь 2005 Категория: Russian Federation Online Status: Offline Публикации: 15 |
Опубликовано: 28 Декабрь 2005 07:52 |
Здравствуйте, проблема состоит в следующем: Необходимо разработать ПО для контроллера IView-100. Описание его находится на этой странице http://www.nnz-ipc.ru/cgi-bin/main.pl?mode=spec&ObjNo=5002623&CclsID=347&uid=1132449837. Есть еще другие функции, которые описаны в руководстве (они вроде работают, если пишешь на C), но не работают, если пишешь на C++. Использую Turbo C++ версии 3.0.
Прошу, отзовитесь кто работал с MiniOs7, очень нужно. |
|
Участник Присоединился: 18 Ноябрь 2005 Категория: Russian Federation Online Status: Offline Публикации: 54 |
|
У вас библиотеки для какой модели памяти?
Судя по названию (iview40L.lib), для модели Large. Естественно, если вы установите в опциях компилятора модель Small, с ними ничего не соберется. Я никогда не работал с IView100, но у меня компакт-диске от ICPDAS есть библиотеки и описание этого контроллера. библиотеки такие: iview.h iviewl.h - для модели large iviews.h - для модели small mmi100.h mmi100.lib - понятия не имею, для какой модели. |
|
Профили участников
Послать частное письмо
Поиск публикаций участников
Посетить домашнюю страницу участника
Добавить в список приятелей
Действительный член Присоединился: 24 Февраль 2004 Категория: Russian Federation Online Status: Offline Публикации: 185 |
|
На поставляемом диске (так всегда есть для подобных контроллеров i7188) есть довольно хорошее HTML-описание функций API для прилагаемых библиотек. Думаю что это касается и используемых вами библиотек. У вас библиотека iview40L.lib с буквой L в конце. Это означает, что она скомпилирована для модели LARGE, и использовать ее можно только для такой модели памяти. Для модели SMALL такая библиотека может называться iview40S.lib, если таковая вообще есть. |
|
Александр Бурмистров,
www.entels.ru |
|
Новичок Присоединился: 28 Декабрь 2005 Категория: Russian Federation Online Status: Offline Публикации: 15 |
|
Спасибо вам nick_user . Нашел на диске я файл iviews.lib, скомпилировал - все работает, если не используешь некоторые функции из заголовочного файла. Начинаешь их использовать пишет дословно следующее: undefined symbol _LcdPutsXY in module tst.c. Может ли так быть, что некоторые функции из заголовочного файла есть в lib-файле, а некоторых - нет? И еще один вопрос. В руководстве к прибору были описаны некоторые функции, которые, если пишешь на C работают, а на C++ - нет. Вот некоторые из них: InitLCD() initLCD() ClrScrn() clrLCD() TextOutAt() textoutT() CloseLCD() closeLCD(). Те, что расположены справа - работают в C, а в C++ - не работают. Те, что расположены слева нигде не работают, но их прототипы находятся в файле mmi100.h. Прототипы функций, расположеных справа вообще нигде НЕТ. Как такое может быть? Прототипов нет, а все в C компилируется и компонуется, только в C++ нехочет. Можно ли каким-то образом засунуть прототипы в lib-файл, и самое важное, можно ли их оттуда достать? |
|
Prosoft.ru Присоединился: 21 Июнь 2003 Online Status: Offline Публикации: 432 |
|
Судя по всему, нурешаются соглашения об именах. Пробовали добавлять в *.H файлах такую конструкцию: #ifdef _cplusplus extern "C" { // все объявления функций
} #endif |
|
Новичок Присоединился: 28 Декабрь 2005 Категория: Russian Federation Online Status: Offline Публикации: 15 |
|
Спасибо, remint . Вы писали, что: На поставляемом диске (так всегда есть для подобных контроллеров i7188) есть довольно хорошее HTML-описание функций API для прилагаемых библиотек. Думаю что это касается и используемых вами библиотек. Дело в том, что есть на диске pdf-ник и есть бумажное руководство - распечатанный pdf-ник, но только там очень много ошибок и нет полного описания тех функций какие я нашел в заголовочных файлах. Хотелось бы иметь хорошую документацию на API MiniOS7, а не жалкое ее подобие в исполнении полуграмотного китайца. Если Вам не трудно, прошу слить что у Вас есть по MiniOs7 мне на silart@mail.ru. Заранее благодарен. С уважением, silart. |
|
Новичок Присоединился: 28 Декабрь 2005 Категория: Russian Federation Online Status: Offline Публикации: 15 |
|
В файле mm100.h так все и сделано. Пробовал объявлять функции, расположенные справа (initLCD()) следующим образом: extern "C" void initLCD(); Но ничего не помогает: линкер пишет, что в файле mm100.lib нет этих функций. |
|
Новичок Присоединился: 28 Декабрь 2005 Категория: Russian Federation Online Status: Offline Публикации: 15 |
|
Здравстуйте, с прибором IVIEW-100 есть еще некоторые проблемы. Главная проблема заключается в следующем: При отправки в COM2 прибора какого-нибудь числа (отправляются 16-разрядные целые числа типа WORD в Windows) контроллер получает совсем не то, что ему было отправлено. Если прибор что-то шлет в компьютер – тоже приходит не то. Порты прибора и компьютера соединены нуль-модемным кабелем, как было сказано в инструкции, его длина не более метра и прибор тестируется в жилом помещении (то есть помех быть не должно). Кабель спаян правильно: им я пробовал соединять два последовательных порта компьютера, и все работало. Соединял прибор с компьютером кабелем, купленным в магазине (этот кабель тоже был протестирован на 2-х портах компьютера) – те же глюки. Пробовал соединять прибор прямым кабелем (не нуль-модемным) – вообще связь не работает. На моем компьютере имеется один COM-порт и установлена плата PCI COM-порта типа Netmos 9835. Прибор подключен к порту, который на плате. Возможно проблемы в неправильно работающих API-функциях MiniOS7? Или что-то со скоростями UARTа? Или может быть типы пересылаемых данных не согласованы. Подскажите пожалуйста. Привожу здесь исходники для MiniOs7 и для Windows. #include "mmi100.h" #include "iview.h" #include <stdio.h> #include <string.h> #include <stdlib.h> int port = 2; int iNumberBuffer = 0; char szStringTmp[16]; int main() { Print("XxxxxxxxxxX\n"); InstallCom(port, 115200, 8, 0, 1); Print("Installed Com2\n"); if (initLCD() > 0) { Print("Can not initialize LCD\n"); } else { while (1) { if (IsCom(port)) { iNumberBuffer = ReadCom(port); Print("Port:%d\n", iNumberBuffer); clrLCD(); } memset(szStringTmp, 0, sizeof(szStringTmp)); itoa(iNumberBuffer, szStringTmp, 10); textoutT(8, 4, szStringTmp); } closeLCD(); } RestoreCom(port); Print("Restore Com2\n"); return 0; } #include <windows.h> HANDLE hCom = INVALID_HANDLE_VALUE; DCB dcb; BOOL bResult = FALSE; WORD iData[4]; DWORD dwReaden = 0, dwWriten = 0; int main() { hCom = CreateFile(TEXT("COM4"), GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); if (hCom != INVALID_HANDLE_VALUE) { ZeroMemory(&dcb, sizeof(dcb)); bResult = BuildCommDCB(TEXT("baud=115200 parity=N data=8 stop=1"), &dcb); dcb.fNull = FALSE; bResult = SetCommState(hCom, &dcb); PurgeComm(hCom,PURGE_RXCLEAR); ZeroMemory(iData, sizeof(iData)); iData[0] = 16; iData[1] = 24; iData[2] = 27; iData[3] = 12; /* Отправленную в COM-порт последовательность целых чисел, */ bResult = WriteFile(hCom, &iData[0], 2, &dwWriten, NULL); bResult = WriteFile(hCom, &iData[1], 2, &dwWriten, NULL); bResult = WriteFile(hCom, &iData[2], 2, &dwWriten, NULL); bResult = WriteFile(hCom, &iData[3], 2, &dwWriten, NULL); CloseHandle(hCom); } return 0; } |
|
Участник Присоединился: 18 Ноябрь 2005 Категория: Russian Federation Online Status: Offline Публикации: 54 |
|
Здравствуйте, silart.
Я бы предложил следующее. 1. Порт COM2 контроллера, согласно документации, может работать как RS485 и RS232. Проверьте, как установлена перемычка. 2. Насчет кабеля: проверьте, чтобы был соединены: a) вывод 4 DB15(TxD2) с выводом 2 DB9(компьютер,RxD). b) вывод 14 DB15(RxD2) с выводом 3 DB9(компьютер,TxD). c) вывод 15 DB15(GND2) с выводом 5 DB9(компьютер,GND). 3. Зашейте для теста в контроллер программу-эхо: void main() { InstallCom(2, 115200, 8, 0, 1); while(1) { if(IsCom2()) { while(DataSizeInCom2()) ToCom2(ReadCom2()); } } } и запустите гипертерминал или программу 7188.exe (которая служит для прошивки контроллеров). Соответственно, то, что вы будете набирать с клавиатуры, будет отправляться в контроллер, он будет возвращать эти символы и в этом случае они будут отображаться в консоли 7188.exe (или на гипертерминале). Вот пока и все, что могу посоветовать. |
|
Новичок Присоединился: 28 Декабрь 2005 Категория: Russian Federation Online Status: Offline Публикации: 15 |
|
Спасибо за дельный совет, nick_user. Подскажите, пожалуйста, где находится эта перемычка. Когда я разбирал прибор там было 5 перемычек. Все они предназначены для управления дискретным вводом-выводом. Так написано в документации. Хотя там была где-еще одна перемычка, но я не знаю для чего она нужна.
|
|
Ответить | Страница 123> |
Переход на форум | Права доступа на форуме Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме |