Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.03.2009, 14:30   #1
KuevProger
Пользователь
 
Регистрация: 16.03.2009
Сообщений: 38
По умолчанию Как данные с массива передавать на тренд и таблицу?

Люди помогите плз! Я самбы сделал просто хз как.
Надо сделать чтоб данные с массива передовались на тренд и таблицу.
Спасибо заранее благодарен!
Вот листинг проги:

Код:
var
  DCB   : TDCB;
  CT:  TCommTimeouts;
  hPort : THandle;
  i:integer;
  ReadThread:TReadThread;
  Value:array[1..9] of real;
  tick:integer=0;
  tck_reg:Integer=0;
  Form1: TForm1;
  NamePatch:String;
  RegFileName:string;
  RegFile:TFileStream;
  str,st_file:string;
implementation
{$R *.dfm}
Procedure Create_RegFile;
var
n:byte;
begin
RegFileName:=DateToStr(now)+'.txt';
if FileExists(RegFileName) Then
  begin
     RegFile := TFileStream.Create(RegFileName,fmOpenWrite or fmShareDenyRead);
     RegFile.Seek(0,soFromEnd);
  end
   else
  begin
     RegFile:=TFileStream.Create(RegFileName, fmCreate or fmOpenReadWrite or fmShareDenyNone);
 st_file:=st_file+'Время;';
 For  n:=1 To 9 Do
 begin
  st_file:=st_file+'Канал'+IntToStr(n)+';';
  end;
st_file:=st_file+#13;
RegFile.Write(Pchar(st_file)^, Length(st_file));
  end;
end;
procedure StartRead;
begin
ReadThread:=TReadThread.Create(True);
 with ReadThread do begin
  Priority:=tpNormal;
  FreeOnTerminate:=True;
  Resume;
 end;
end;
procedure clr_com;
begin
PurgeComm(hPort,PURGE_TXCLEAR);
PurgeComm(hPort,PURGE_RXCLEAR);
end;
Function InitADAM():boolean;
begin
 hPort := CreateFile(PChar('COM1'),GENERIC_READ + GENERIC_WRITE,0, nil,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
 if hPort = INVALID_HANDLE_VALUE then
 begin
 exit;
 end;
 if not GetCommState(hPort, DCB) then ShowMessage('Ошибка чтения настроек порта') else
  begin
  DCB.BaudRate := CBR_38400;
  DCB.ByteSize :=8;
  DCB.StopBits :=ONESTOPBIT;
  DCB.Parity   := 0;
  if not SetCommState(hPort, DCB) then  ShowMessage('Ошибка записи настроек порта');
CT.ReadTotalTimeoutConstant:=50;
CT.ReadIntervalTimeout :=25;
CT.ReadTotalTimeoutMultiplier :=0;
CT.WriteTotalTimeoutMultiplier := 0;
CT.WriteTotalTimeoutConstant := 0;
If Not SetCommTimeouts(hPort, CT) Then ShowMessage('Ошибка конфигурации таймаутов !!!');
if not SetupComm(hPort, 1024, 1024) then ShowMessage('Ошибка записи настроек буферов порта');
if PurgeComm(hPort, PURGE_TXABORT or PURGE_RXABORT or PURGE_TXCLEAR or PURGE_RXCLEAR) then ;
Result:=True;
end;
end;
Function ReadValue(Module:byte):string;
var
ByteWritten,ByteReaded:dword;
ReadByte,ReadByte1:array [0..255] of char;
begin
str:='#0'+inttostr(Module)+#13;
clr_com;
WriteFile(hPort,pchar(Str)^,Length(Str),ByteWritten,Nil);
ReadFile(hport,ReadByte,SizeOf(ReadByte),ByteReaded,Nil);
sleep(50);
Result:=ReadByte;
end;
Procedure TReadThread.Execute;
var
respone:string;
num,n,m:byte;
begin
For num:=1 To 2 Do
 begin
  respone:=ReadValue(num);
  sleep(10);
  If num=1 Then
   begin
    delete(Respone,1,1);
    n:=1;
    m:=1;
    While n<>57 Do
     begin
     Value[m]:=StrToFloat(copy(Respone,n,6));
     inc(n,7);
     inc(m,1);
     end;
   end;
   If num=2 Then
    begin
    delete(Respone,1,1);
    Value[9]:=StrToFloat(copy(Respone,1,6));
    end;
 end;
For i:=1 To 9 Do
begin
Form1.StringGrid1.Cells[i-1,0]:='CH'+IntToStr(i);
Form1.StringGrid1.Cells[i-1,1]:=FloatToStr(value[i]);
end; 
end;
{+02.409+03.221+03.102+02.988+02.879+02.774+02.673+02.576 >данные передоваемые через компорт из adam-4019 (value[1..8]) 

{>+19.531}>данные передоваемые через компорт из adam-4011(value[9])}

Procedure WriteValue;
var
n:byte;
begin
st_file:='';
st_file:=st_file+TimeToStr(now)+';';
For  n:=1 To 9 Do
 begin
  st_file:=st_file+FloatToStr(value[n])+';';
  end;
st_file:=st_file+#13;
RegFile.Write(Pchar(st_file)^, Length(st_file));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin

Timer1.Enabled:=True;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
InitADAM;
NamePatch:=ExtractFilePath(Application.ExeName);
Create_RegFile;
Timer1.Enabled:=True;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
StartRead;
inc(tick,1);
Label1.Caption:='Cicle='+IntToStr(tick);
end;

procedure TForm1.Timer2Timer(Sender: TObject);
begin
WriteValue;
inc(tck_reg,1);
Label2.Caption:='Регистрация:'+IntToStr(tck_reg);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 Timer1.Enabled:=False;
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
Timer2.Interval:=StrToInt(ComboBox1.Text);
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
Timer2.Interval:=StrToInt(ComboBox1.Text);
Timer2.Enabled:=True;
end;

procedure TForm1.BitBtn3Click(Sender: TObject);
begin
Timer2.Enabled:=False;
end;
end.
Помогите с прогой плз ЛЮЮЮДДДИИИ

Последний раз редактировалось KuevProger; 20.03.2009 в 11:44.
KuevProger вне форума Ответить с цитированием
Старый 20.03.2009, 11:47   #2
KuevProger
Пользователь
 
Регистрация: 16.03.2009
Сообщений: 38
По умолчанию

че никто чтоли с АДАМАМИ дела не имел... По зарез надо помогите кто чем может пожалуйста.
KuevProger вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вставить в таблицу Excel данные из текстового файла Диагностик Microsoft Office Excel 8 13.12.2009 13:50
символьные данные сложной структуры и имя массива как параметр функции EkaterinaA Помощь студентам 3 22.02.2009 21:36
Как добавлять данные в таблицу выведенную из ACCESS в DBGrid (Delphi ADO) Ce4kok БД в Delphi 26 26.01.2009 20:35
Возможно ли через ПХП передавать данные между разными сайтами? tunyash PHP 1 31.07.2008 16:26
как из dll передавать данные в основную программу? andrey4623 Общие вопросы Delphi 5 06.08.2007 10:15