Форум: "Основная";
Текущий архив: 2003.09.29;
Скачать: [xml.tar.bz2];
ВнизКак переписать код на Си в делфи? заранее благодарен Найти похожие ветки
← →
promelectronika (2003-09-10 15:02) [0]float f;
void main()
{
unsigned char *cc, mm[7];
port_init(0,207);
printf(" ‘“ЊЊЂ =");
sport(0,84); /* T */
delay(100);
sport(0,48); /* 0 */
delay(100);
sport(0,70);/* F */
for(i=0;i<=7;i++)
mm[i]=rport(0);
delay(1000);
for(i=1;i<=4;i++)
printf("<%x>",mm[i]);
/* Џђ…ЋЃђЂ‡Ћ‚ЂЌ?… Џђ?Ќџ’›• „ЂЌЌ›• ‚ ”ЋђЊЂ’ "FLOAT" */
cc = (unsigned char *)&f ;
for(i = 1 ; i <=4 ; i++)
*cc++ = mm[i] ;
printf("%.2f", f) ;
}
← →
Saint_Byte (2003-09-10 17:08) [1]Это скорее всего на паскаль надо переписывать
← →
Saint_Byte (2003-09-10 17:10) [2]sport(0,84); и еще что это за Саба ???
Дык это написано с кучей самописных саб вот ... Так что =(((
← →
=Sniper= (2003-09-10 22:51) [3]Ради прикола попробовал перевести! %-)
PROGRAM cool;
var
f : double;
cc : Pchar;
mm7:array[0..6] of Pchar
begin
port_init(0,207);
Write(" ‘“ЊЊЂ =");
sport(0,84);// T
delay(100);
sport(0,48);// 0
delay(100);
sport(0,70);// F
for i:= 1 to 7 do
mm[i] := rport(0);
delay(1000);
for i:= 1 to 4 do
write("<%x>",mm[i]);
// cc = (unsigned char *)&f ; не знаю что это такое! %-)
for i:= 1 to 4 do
*cc++ = mm[i] ;//не знаю что это такое! %-)
write("%.2f", f) ;
end.
← →
mzu (2003-09-11 09:42) [4]Ради прикола можно использовать транслятор, входящий в комплект Gnu Compiler Collection ...
← →
savva (2003-09-11 11:04) [5]> // cc = (unsigned char *)&f ; не знаю что это такое! %-)
получаем ссылку по значению на первый байт чилса F
> for i:= 1 to 4 do
> *cc++ = mm[i] ;//не знаю что это такое! %-)
а дальше проходимся, наращиваем указатель и заполняем послеовательно..
← →
xxxXXxx (2003-09-11 11:16) [6]Удалено модератором
Примечание: offtopic
← →
=Sniper= (2003-09-11 13:12) [7]2 savva: спасибо буду знать! :-)
И ещё объясни чё это такое:
&&
!=
???
← →
AKuman (2003-09-11 13:57) [8]&& - логическое умножение, на Паскале and
!= - не равно <>
Вообще судя по всему эта С-программа читает побайтно вещественное число из аппаратного порта 207 (Вероятно показания датчика).
Вот только набор функций port_init(), sport(), rport() я не припомню. Надо посмотреть в справочнике по С. :-)
← →
AKuman (2003-09-11 14:08) [9]Кстати, если кто помнит, в Turbo/Borland Pascale с портами работали как с массивом.
Например:
var
ByteFromPort : Byte;
begin
ByteFromPort := Port[207];
Port[207] := $01;
end.
А как в Дельфи? Кто знает?
← →
first_aid (2003-09-11 14:19) [10]2 AKuman
А в Дельфи, нет такого, под NT например с портами напрямую работать нельзя.
← →
Reindeer Moss Eater (2003-09-11 15:06) [11]www.google.com + "c2pas"
← →
AKuman (2003-09-11 15:21) [12]2 Reindeer Moss Eater ©
//www.google.com + "c2pas"
c2pas не поможет для задач подобного рода. Как совершенно точно заметил first_aid © старшие версии Виндов не позволяют напрямую работать с аппарвтными портами. Нужно искать что-то типа
www.google.com + "Как написать драйвер на Delphi"
Хотя в ранних версиях Виндов очень помогали ассемблерные вставки.
← →
promelectronika (2003-09-11 16:40) [13]меня интересует все же эта часть кода:
...
float f;
void main()
{
unsigned char *cc, mm[7];
...
...
cc = (unsigned char *)&f ;
for(i = 1 ; i <=4 ; i++)
*cc++ = mm[i] ;
printf("%.2f", f) ;
за ранее благодарен. Олег
← →
Verg (2003-09-11 16:53) [14]Ну что?
var f : single;
procedure main;
var cc: pchar;
mm : array[0..6] of byte; // Там кстати ошибка в цикле - там надо i<=6
begin
....
сс := pchar(@mm);
for i:=1 to 4 do
begin
cc^:=chr(mm[I]);
inc(cc);
end;
write(f);
...
end;
← →
Verg (2003-09-11 16:54) [15]
> сс := pchar(@mm);
Тьфу ты!
сс := pchar(@f);
← →
icWasya (2003-09-11 17:03) [16]PROGRAM cool;
var
mm : array[0..6] of Byte;
f : single;
c : array[0..3] of Byte absolute f;
begin
port_init(0,207);
Write(" Сумма=");
sport(0,84);// T
delay(100);
sport(0,48);// 0
delay(100);
sport(0,70);// F
for i:= 0 to 6 do
mm[i] := rport(0);
sleep(1000);
for i:= 0 to 3 do
write( HexToStr(mm[i]));
/* ПРЕОБРАЗОВАНИЕ ПРИНЯТЫХ ДАННЫХ В ФОРМАТ "FLOAT" */
for i:= 0 to 3 do
c[i] := mm[i] ; // возможно надо c[3-i] := mm[i]
write( " ", f ) ;
end.
← →
promelectronika (2003-09-17 09:56) [17]Спасибо!
Решение найдено.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.09.29;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.009 c