Форум » [x]Harbour » Cipher 8001 [SDK] » Ответить

Cipher 8001 [SDK]

Dima: Что то не получается прицепить к Xharbour. Sdk сложил тут _http://files.mail.ru/1UA82O Тестовый пример такой. [pre2] 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 [/pre2] Что не так делаю ? ЗЫ При сборке ругается на строки из irlib.ch , DllExport void WINAPI WriteIrCom (LPSTR lpStr); и тд Из irlib.dll сделал (implib) Irlib.lib которую и линкую

Ответов - 12

Pasha: irlib.h у меня компилируется без ошибок А функции должны быть такими: HB_FUNC( CPH_OPENIRCOM ) { hb_retnl( (LONG) OpenIrCom( hb_parnl(1), hb_parnl(2)) ); } HB_FUNC( CPH_CLOSEIRCOM ) { CloseIrCom(); hb_ret(); }

Dima: Pasha пишет: irlib.h у меня компилируется без ошибок У меня вот чего выдает [pre2] 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 [/pre2] Pasha пишет: А функции должны быть такими: Спасибо !

Pasha: перед irlib.h надо вставить #include "windows.h"


Dima: Pasha Заработало ;) Спасибо ! Как правильно оформить функции ? WriteIrCom ReadIrCom ShowErrorMessage А то чую напишу на код на С.....

Pasha: HB_FUNC( CPH_WRITEIRCOM ) { WriteIrCom( hb_parc(1) ); hb_ret(); } HB_FUNC( CPH_READIRCOM ) { hb_retc( ReadIrCom( ) ); }

Pasha: HB_FUNC( CPH_SHOWERRMSG ) { hb_retnl( ShowErrorMessage( hb_parnl(1) ) ); }

Dima: Pasha Спасибо ! Все чудно только ? CPH_READIRCOM() , ни чего не выдает и вываливается на Timeout (5 секунд) Если считывать родной прогой от него , все OK [pre2] ? CPH_OPENIRCOM(1,115200) // 1992 ? CPH_READIRCOM() // Timeout хотя терминал включен в режим передачи данных ? CPH_CLOSEIRCOM() // Nil [/pre2]

Pasha: можно еще проверять на пустую строку: HB_FUNC( CPH_READIRCOM ) { char * szStr = ReadIrCom( ); hb_retc( szStr ? szStr : "" ); }

Dima: Pasha пишет: можно еще проверять на пустую строку: Не помогло.

Pasha: из комментария к этой функции * 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 возвращается как строка пока непонятно, почему не работает

Pasha: Так выдается сообщение об ошибке ? там же есть сырцы вот эта функция: [pre]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; }[/pre] Завершается по MessageBox ? Тогда что-то внутри функции, или неправильная настройка Вызывается то она без параметров

Dima: Pasha пишет: Завершается по MessageBox ? Да. Порт если я верно понял открывается нормально. Но следующая за ним ? CPH_READIRCOM() Ни чего не выдает. Странно.....



полная версия страницы