PDA

Просмотр полной версии : СИ8 и delphi



CybSys
07.10.2010, 16:43
вопрос такой: как получить данные в программе непользуясь здешней библиотекой так как она неставится. для работы с сом портом использую другую библиотеку.
я так понимаю на си8 сначало надо послать одну из 3-х команд для приема данных?
если это так, то можно ли просто в ком порт послать эту команду?

или как считать данные с си8?

CybSys
07.10.2010, 21:49
как библиотеку установить?

Малышев Олег
08.10.2010, 09:18
Скопируйте .dll в каталог windows/system32 или в рабочий каталог программы (где находится ваш exe файл)

CybSys
08.10.2010, 22:21
попрежнему неработает! :(
пример на делфи тоже неработает

CybSys
09.10.2010, 23:11
разобрался!
Вот функция чтения: function ReadSInt(adr,adr_type:DWORD;command:PChar;var value:Integer;index:Integer): Integer;
присваиваю ей следующие значения: imp:=ReadSInt(0,0,'c173',2,1);
компилятор выдает ошибку.
вопрос: что не так?

CybSys
11.10.2010, 20:15
с библиотекой вроде разобрался, программа компилируется нормально, но как только нажимаем кнопку открыть порт- программа выдает ошибку.
чтоже всетаки не так?

CybSys
12.10.2010, 15:42
вот так происходит у меня чтение данных:
procedure TForm1.Button1Click(Sender: TObject);
begin
imp:= ReadSI8BCD(0,0,'DCNT', value);
end;

кстати пример работы с библиотекой тоже неработает.
после запуска программы она сразуже вылетает.

Малышев Олег
13.10.2010, 09:21
0) На всякий случай, проверьте что у вас последняя версия библиотеки - как на сайте.
1) тут на форуме было подробное обсуждение дельфи и рекомендация к использованию лицензионных продуктов типа MS C# Express. Если нет большой наработки программ на дельфи и опыта использования pascal, все таки, используйте C#. Дельфи какой версии используете? Проверялось на 6,7. Программа лицензионная или ворованная?
2) Все функции являются указателями - при загрузке они инициируются путем загрузке соответствующих функций из dll. Проверьте значения указателя - он должен быть не null
3) После получения ошибки - какое значение возвращают функции возврата ошибок из библиотеки?

CybSys
13.10.2010, 09:57
0) Библиотеку скачал сдесь на сайте, дата ее изменения 29.01.2010
1) Ненашел подробного обсуждения, использую 7-ю версию, пиратка.
2) Инициализирую вот так: function ReadSI8BCD(adr,adr_type:DWORD;command:PChar; var value:Integer):Integer;
external 'owen_io.dll';
Как проверить значение этого указателя?

CybSys
13.10.2010, 10:38
unit Owen_CI8;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

function OpenPort(n,speed, parity,bits,stop,converter:DWORD): Integer;
external 'owen_io.dll';
function ReadSI8BCD(adr,adr_type:DWORD;command:PChar; var value:Integer):Integer;
external 'owen_io.dll';

var
Form1: TForm1;
imp, va: integer;
implementation


{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
va:=0;
if OpenPort(0,2,0,1,0,0)>0 then begin
imp:= ReadSI8BCD(0,0,' DCNT ', va);
if imp=0 then
Edit1.Text:= IntTostr(va)
else Edit1.Text:= 'ERROR';
end else Exit;
end;

end.

Малышев Олег
13.10.2010, 12:29
1) По C# смотреть примерно здесь (http://www.owen.ru/forum/showthread.php?t=232&page=6) - да и всю тему рекомендую прочитать - весьма полезно посмотреть на прохождение по граблям. C# Express - да поможет великий яндекс.
2) В коде меня лично смутило ReadSI8BCD(0,0,' DCNT ', va);нужно ReadSI8BCD(0,0,'DCNT', va)

Пример на дельфи 7 однозначно работает. Пройдитесь отладчиком.

CybSys
13.10.2010, 23:32
сом порт неоткрывается, и программа вылетает

Дмитрий Егоренков
14.10.2010, 11:44
function OpenPort(n,speed, parity,bits,stop,converterWORD): Integer;stdcall;
external 'owen_io.dll';
function ReadSI8BCD(adr,adr_typeWORD;command:PChar; var value:Integer):Integer;stdcall;
external 'owen_io.dll';

CybSys
14.10.2010, 21:04
ну так эти строчки у меня уже добавлены, без них бы программа нескомпилировалась бы.

CybSys
14.10.2010, 21:09
function OpenPort(n,speed, parity,bits,stop,converterWORD): Integer;stdcall;
external 'owen_io.dll';
function ReadSI8BCD(adr,adr_typeWORD;command:PChar; var value:Integer):Integer;stdcall;
external 'owen_io.dll';

спасибо!!!!!!!!!!!!!!!!!!!!!!
Понял, нехватало "stdcall;" оталось понять что это. но это уже мелочи спасибо.