Автор | Сообщение |
|
| |
Пост N: 1480
Зарегистрирован: 17.05.05
|
|
Отправлено: 26.03.10 12:12. Заголовок: Cipher 8001 [SDK]
Что то не получается прицепить к Xharbour. Sdk сложил тут _http://files.mail.ru/1UA82O Тестовый пример такой. ANNOUNCE RDDSYS Proc main() ? CPH_OPENIRCOM(1,115200) ? CPH_CLOSEIRCOM() return #pragma BEGINDUMP #include "hbapi.h" #include "irlib.h" HB_FUNC( CPH_OPENIRCOM ) { hb_retnl( OpenIrCom( hb_parnl(1), hb_parnl(2)) ); } HB_FUNC( CPH_CLOSEIRCOM ) { hb_retnl( CloseIrCom() ); } #pragma ENDDUMP Что не так делаю ? ЗЫ При сборке ругается на строки из irlib.ch , DllExport void WINAPI WriteIrCom (LPSTR lpStr); и тд Из irlib.dll сделал (implib) Irlib.lib которую и линкую
|
|
|
Ответов - 12
[только новые]
|
|
|
| Администратор
|
Пост N: 1375
Зарегистрирован: 23.05.05
|
|
Отправлено: 26.03.10 14:00. Заголовок: irlib.h у меня компи..
irlib.h у меня компилируется без ошибок А функции должны быть такими: HB_FUNC( CPH_OPENIRCOM ) { hb_retnl( (LONG) OpenIrCom( hb_parnl(1), hb_parnl(2)) ); } HB_FUNC( CPH_CLOSEIRCOM ) { CloseIrCom(); hb_ret(); }
|
|
|
|
| |
Пост N: 1481
Зарегистрирован: 17.05.05
|
|
Отправлено: 26.03.10 14:12. Заголовок: Pasha пишет: irlib...
Pasha пишет: цитата: | irlib.h у меня компилируется без ошибок |
| У меня вот чего выдает xHarbour Compiler build 1.1.0 (SimpLex) (Rev. 6225) Copyright 1999-2008, http://www.xharbour.org http://www.harbour-project.org/ Compiling 'ircp.PRG'... Lines 9, Functions/Procedures 2 Generating C source output to 'obj\ircp.c'... Done. Building object module for 'obj\ircp.c' using C compiler 'BCC32' as defined in 'c:\x\bin\harbour.cfg'... Exec: BCC32 -c -D__EXPORT__ -Ic:\x\include -d -Lc:\x\lib -oobj\ircp.obj obj\ircp.c Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland obj\ircp.c: Error E2141 irlib.h 3: Declaration syntax error Error E2141 irlib.h 13: Declaration syntax error Error E2449 irlib.h 26: Size of 'WINAPI' is unknown or zero Error E2141 irlib.h 26: Declaration syntax error Error E2449 irlib.h 34: Size of 'WINAPI' is unknown or zero Error E2141 irlib.h 34: Declaration syntax error Error E2141 irlib.h 42: Declaration syntax error Error E2141 irlib.h 52: Declaration syntax error Error E2141 irlib.h 64: Declaration syntax error Pasha пишет: цитата: | А функции должны быть такими: |
| Спасибо !
|
|
|
|
| Администратор
|
Пост N: 1376
Зарегистрирован: 23.05.05
|
|
Отправлено: 26.03.10 14:16. Заголовок: перед irlib.h надо в..
перед irlib.h надо вставить #include "windows.h"
|
|
|
|
| |
Пост N: 1482
Зарегистрирован: 17.05.05
|
|
Отправлено: 26.03.10 14:23. Заголовок: Pasha Заработало ;)..
Pasha Заработало ;) Спасибо ! Как правильно оформить функции ? WriteIrCom ReadIrCom ShowErrorMessage А то чую напишу на код на С.....
|
|
|
|
| Администратор
|
Пост N: 1377
Зарегистрирован: 23.05.05
|
|
Отправлено: 26.03.10 14:29. Заголовок: HB_FUNC( CPH_WRITEIR..
HB_FUNC( CPH_WRITEIRCOM ) { WriteIrCom( hb_parc(1) ); hb_ret(); } HB_FUNC( CPH_READIRCOM ) { hb_retc( ReadIrCom( ) ); }
|
|
|
|
| Администратор
|
Пост N: 1378
Зарегистрирован: 23.05.05
|
|
Отправлено: 26.03.10 14:31. Заголовок: HB_FUNC( CPH_SHOWERR..
HB_FUNC( CPH_SHOWERRMSG ) { hb_retnl( ShowErrorMessage( hb_parnl(1) ) ); }
|
|
|
|
| |
Пост N: 1483
Зарегистрирован: 17.05.05
|
|
Отправлено: 26.03.10 14:39. Заголовок: Pasha Спасибо ! Вс..
Pasha Спасибо ! Все чудно только ? CPH_READIRCOM() , ни чего не выдает и вываливается на Timeout (5 секунд) Если считывать родной прогой от него , все OK ? CPH_OPENIRCOM(1,115200) // 1992 ? CPH_READIRCOM() // Timeout хотя терминал включен в режим передачи данных ? CPH_CLOSEIRCOM() // Nil
|
|
|
|
| Администратор
|
Пост N: 1379
Зарегистрирован: 23.05.05
|
|
Отправлено: 26.03.10 14:50. Заголовок: можно еще проверять ..
можно еще проверять на пустую строку: HB_FUNC( CPH_READIRCOM ) { char * szStr = ReadIrCom( ); hb_retc( szStr ? szStr : "" ); }
|
|
|
|
| |
Пост N: 1484
Зарегистрирован: 17.05.05
|
|
Отправлено: 26.03.10 14:57. Заголовок: Pasha пишет: можно ..
Pasha пишет: цитата: | можно еще проверять на пустую строку: |
| Не помогло.
|
|
|
|
| Администратор
|
Пост N: 1380
Зарегистрирован: 23.05.05
|
|
Отправлено: 26.03.10 15:05. Заголовок: из комментария к это..
из комментария к этой функции * Returns A pointer to a null-terminated string. * If the function fails or time out (5 sec), it returns NULL. * Note the return string is ended with a return character. вроде бы правильно, тип LPSTR WINAPI возвращается как строка пока непонятно, почему не работает
|
|
|
|
| Администратор
|
Пост N: 1381
Зарегистрирован: 23.05.05
|
|
Отправлено: 26.03.10 15:13. Заголовок: Так выдается сообщен..
Так выдается сообщение об ошибке ? там же есть сырцы вот эта функция: DllExport LPSTR WINAPI ReadIrCom (void) { DWORD i, nChar, nCount; BYTE cRet; DWORD dwTime0; dwTime0 = GetTickCount (); nCount = 0; // reset char counter cRet = 0; while (cRet != '\r') // while not get the return char keep on reading { if (ReadFile (hComm, cInBuf, 1, &nChar, NULL)) { for (i=0; i<nChar; i++) if (nCount < 255) szBuf [nCount++] = cInBuf ; cRet = cInBuf[i-1]; } if (GetTickCount() - dwTime0 > 5000) // check if time out { if (bShowErrorMessage) MessageBox (GetActiveWindow(), "Time out!", "Error", MB_OK); return NULL; } } szBuf [nCount] = 0; return szBuf; } Завершается по MessageBox ? Тогда что-то внутри функции, или неправильная настройка Вызывается то она без параметров
|
|
|
|
|
| |
Пост N: 1485
Зарегистрирован: 17.05.05
|
|
Отправлено: 26.03.10 15:18. Заголовок: Pasha пишет: Заверш..
Pasha пишет: цитата: | Завершается по MessageBox ? |
| Да. Порт если я верно понял открывается нормально. Но следующая за ним ? CPH_READIRCOM() Ни чего не выдает. Странно.....
|
|
|
|