Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 28.12.2011, 19:07
Аватар для fofka
fofka fofka вне форума
Начинающий
 
Регистрация: 12.10.2008
Сообщения: 163
Репутация: -1588
По умолчанию String и Integer

Добрый вечер всем. Вопрос по формуле.
PHP код:
var
          
string;
          
integer;
          
fVadc Double;
   
begin
{процедура}
 
Vadc:=f/1023.0*3.3
Получаю ошибку.
PHP код:
Unit1.pas(185): Incompatible types'String' and 'Extended' 
Как заставить корректно работать формулу?
Это "продолжение" темы http://www.delphisources.ru/forum/sh...ad.php?t=19573

Последний раз редактировалось fofka, 28.12.2011 в 19:22.
Ответить с цитированием
  #2  
Старый 28.12.2011, 19:23
Аватар для Nikitiy_II
Nikitiy_II Nikitiy_II вне форума
Новичок
 
Регистрация: 01.05.2008
Сообщения: 52
Репутация: 11
По умолчанию

А дальше код где???
Ответить с цитированием
  #3  
Старый 28.12.2011, 19:32
Аватар для fofka
fofka fofka вне форума
Начинающий
 
Регистрация: 12.10.2008
Сообщения: 163
Репутация: -1588
По умолчанию

Полный код процедуры, где ошибка.
PHP код:
procedure TForm1.Timer1Timer(SenderTObject);
 var
    
sstring;
    
iinteger;
    
fRTRMVadc Double;
 
begin
Vadc напряжение АЦП в вольтах к которому подключен датчик
  Vpit 
источник постоянного опорного напряжения
  K 
коэффициент температурной чуствительностиравен 3988
  Rm 
сопротивление резистора в омах схема и формула [url]http://www.kernelchip.ru/KTS-1.php[/url])
  
Ro сопротивление датчика при 25 oCравно3 кОм
  RT 
= (Rm*Vadc)/(Vpit Vadc);
 
Так как модуль запитан через свой стабилизатор 3.3vVpit 3.3v
}
 
RM :=5060.0;///Сопротивление резистора в омах

CS1.Socket.SendText('$KE,ADC,1'#13#10);
 
Memo1.Text:=s;
  {
 
:= edit2.Text;
 }
 if 
s[1] = '#' then begin
 
if copy(s,2,3) = 'ADC' then begin
 i 
:= 5;
 while 
s[i] <> ',' do begin
 
if 10 then break; // (*) if i > 10 then break;
 
inc(i);
 
end;
      
inc(i);
      
:= copy(s,i+1,length(s));
      
Vadc:=s/1023.0*3.3;///расчет напряжения АЦП в вольтах
      
RT:= (Rm*Vadc)/(3.3 Vadc);///расчет сопротивления терморезистора в омах
      
:= (3988.0/({log}(RT/3000.0) + 3988.0/298.0))-273;///Расчет температуры в градусах цельсия
      
Form1.Edit1.Text := FormatFloat('0.0000 C"',f);
      
end;
    
end;
   
end

Последний раз редактировалось fofka, 28.12.2011 в 19:34.
Ответить с цитированием
  #4  
Старый 28.12.2011, 19:39
Аватар для Nikitiy_II
Nikitiy_II Nikitiy_II вне форума
Новичок
 
Регистрация: 01.05.2008
Сообщения: 52
Репутация: 11
По умолчанию

PHP код:
Vadc:=s/1023.0*3.3
а надо так:
PHP код:
Vadc:=strtofloat(s)/1023.0*3.3
Ответить с цитированием
  #5  
Старый 28.12.2011, 19:44
Аватар для fofka
fofka fofka вне форума
Начинающий
 
Регистрация: 12.10.2008
Сообщения: 163
Репутация: -1588
По умолчанию

Сделал как посоветовали. Выдает ошибку.
Изображения
Тип файла: jpg Ошибка.jpg (12.5 Кбайт, 13 просмотров)
Ответить с цитированием
  #6  
Старый 28.12.2011, 19:45
Аватар для fofka
fofka fofka вне форума
Начинающий
 
Регистрация: 12.10.2008
Сообщения: 163
Репутация: -1588
По умолчанию

PHP код:
procedure TForm1.CS1Read(SenderTObject;SocketTCustomWinSocket);
 
begin
  s 
:= Socket.ReceiveText;
end
Ответить с цитированием
  #7  
Старый 28.12.2011, 21:33
Аватар для fofka
fofka fofka вне форума
Начинающий
 
Регистрация: 12.10.2008
Сообщения: 163
Репутация: -1588
По умолчанию

Цитата:
Сообщение от Nikitiy_II
PHP код:
Vadc:=s/1023.0*3.3
а надо так:
PHP код:
Vadc:=strtofloat(s)/1023.0*3.3
Спасибо за подсказку помогло. Был не прав, работает У меня ошибка.....

Последний раз редактировалось fofka, 28.12.2011 в 21:46.
Ответить с цитированием
  #8  
Старый 28.12.2011, 22:49
Аватар для fofka
fofka fofka вне форума
Начинающий
 
Регистрация: 12.10.2008
Сообщения: 163
Репутация: -1588
По умолчанию

Внимательно еще раз прочитав мануал отыскал такой момент
PHP код:
Любая KE командаотсылаемая модулюдолжна начинаться с символов ‘$KE’
Также все команды должны заканчиваться символом возврата каретки <CR
и символом перехода на новую строку <LF> (в шестнадцатеричном формате 
эти символы имеют коды 0x0D и 0x0A соответственно
). 
Ответы модуля на командыа также отдельные информационные блоки 
выдаваемые модулем всегда начинаются с символа ‘
#’ (шестнадцатеричный код 0x23) 
и заканчиваются символами возврата каретки <CRи перехода на новую строку <LF>. 
Получается что входной сигнал для программы у меня
PHP код:
#ADC,1,0293#13#10 
потому и ошибка. А как мне от них (#13#10) избавится?
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 20:10.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025