Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
1 / 1 / 0
Регистрация: 19.04.2011
Сообщений: 18

Прога из delphi в builder

26.04.2011, 20:14. Показов 1026. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
прогf для модуля Ke-USB24A написанна на Delphi

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
var
  Form1: TForm1;
  MyTimer: TTimer;
  uTimerID: word;
  i: word;
  CommHandle : hFile;
  DCB : TDCB;
  PortString: string;
  CommTimeOuts: TCOMMTIMEOUTS;
 
  p: PChar;
  BinBuf: array[0..1023] of Char;
  buffer: string;
  ADC_Res: array[0..64] of Char;
  ADCFloat: Double;
  CRbyte: Shortint;
  LFbyte: Shortint;
  NumberWritten : DWORD; 
 
implementation
 
{$R *.dfm}
 
 
procedure FNTimeCallBack(uTimerID, uMessage: UINT;dwUser, dw1, dw2: DWORD);stdcall;
begin
 
ReadFile(CommHandle, BinBuf, 128, NumberWritten, nil);
if(NumberWritten > 0) then
begin
p := BinBuf;
for i:=1 to NumberWritten do
begin
//**************
if (p^ = '#') then
begin
  if(StrLComp(p, PChar('#ADC,'), 4) = 0) then
  begin 
    p := p + 5;
    StrLCopy(ADC_Res, p, 4);
    ADCFloat := (StrToInt(ADC_Res)/1024)*5;
    Form1.Edit2.Text := FloatToStr(ADCFloat);
  end;
  inc(p);
end
//****************
end;
end;  
end; 
 
 
procedure TForm1.Button1Click(Sender: TObject);
begin
PortString := '\\.\COM' + Edit1.Text;   
CommHandle := CreateFile(PChar(PortString), GENERIC_READ or 
                        GENERIC_WRITE, 0, nil, OPEN_EXISTING, 0, 0);
 
if (CommHandle = INVALID_HANDLE_VALUE) then
begin
  MessageDlg('Error. Can`t Open port', mtError, [mbOK], 0);
end
else
begin
  GetCommState(CommHandle, DCB);
  DCB.BaudRate  := CBR_9600; // FORMALLY, CONNECT BAUD DOESN`T MATTER (Virtual Com Port)
  DCB.Parity    := NOPARITY;
  DCB.ByteSize  := 8;
  DCB.StopBits  := OneStopBit;
  
  CommTimeOuts.ReadIntervalTimeout          := 0;
  CommTimeOuts.ReadTotalTimeoutMultiplier   := 0;
  CommTimeOuts.ReadTotalTimeoutConstant     := 1000;
  CommTimeOuts.WriteTotalTimeoutMultiplier  := 0;
  CommTimeOuts.WriteTotalTimeoutConstant    := 1000;
  SetCommTimeouts(CommHandle, CommTimeOuts);
  SetCommState(CommHandle, DCB);
 
  uTimerID := timeSetEvent(1000,0,@FNTimeCallBack,100,TIME_PERIODIC);
 
  CRbyte := 13; // HEX 0x0D
  LFbyte := 10; // HEX 0x0A
  buffer := '$KE,ADC,1' + Char(CRbyte) + Char(LFbyte);
  WriteFile(CommHandle, PChar(buffer)^, Length(buffer), NumberWritten, nil);
 
  MessageDlg('Port Open Ok', mtInformation, [mbOK], 0);
end
 
end;
На основе этой проги пишу такуюже только на Builder, сама прога запускается но не работает не могу понять где ошибка.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
#include "windows.h"
#include "Mmsystem.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
HANDLE ComPort;
 
DWORD NumWrt;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
//---------------------------------------------------------------------------
 void CALLBACK Port (unsigned ID, unsigned Msg, DWORD UserData, DWORD w1, DWORD w2)
{
  char BinBuf, ADC_Res, p, p1;
 // const char st="#ADC,";
 // PChar p;
  int i;
  double ADCFloat;
 
  //p1='#ADC,';
  ReadFile(ComPort, &BinBuf, 128, &NumWrt, NULL);
  if (NumWrt>0)
 
   {
    p=BinBuf;
     for (i=0; NumWrt; i++)
     {
       if(p=='#')
       {
         if(StrLComp(&p,PChar("#ADC,"),4)==0)
         {
           p=p+5;
           StrLCopy(&ADC_Res, &p, 4);
           ADCFloat=(StrToInt(ADC_Res)/1024)*5;
           Form1->Edit2->Text=FloatToStr(ADCFloat);
           //Form1->Caption=FloatToStr(ADCFloat);
         }
         p++;
       }
     }
   }
}
 
//----------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  String portname, buf, buf1;
  DCB dcb;
  COMMTIMEOUTS timeouts;
  //unsigned  timer_id;
  short CRbyte, LRbyte;
  unsigned char bufwr;
  //AnsiString name='COM';
 
  // portname='\\.\COM'+Edit1->Text;
  portname=Edit1->Text;
 
    ComPort=CreateFile(portname.c_str(),GENERIC_READ || GENERIC_WRITE,
                       0,NULL,OPEN_EXISTING,NULL,NULL);
 
      if (ComPort==INVALID_HANDLE_VALUE)
      {
      // Form1->Caption=name;
         MessageBox(NULL, "Not Open Port", "ERORR", MB_OK);
        return;
      }
         else
          {
            GetCommState(ComPort,&dcb);
            dcb.BaudRate=CBR_9600;
            dcb.Parity=0;
            dcb.ByteSize=8;
            dcb.StopBits=0;
 
               timeouts.ReadIntervalTimeout=0;
               timeouts.ReadTotalTimeoutMultiplier=0;
               timeouts.ReadTotalTimeoutConstant=1000;
               timeouts.WriteTotalTimeoutConstant=1000;
               timeouts.WriteTotalTimeoutMultiplier=0;
 
                SetCommTimeouts(ComPort, &timeouts);
                SetCommState(ComPort, &dcb);
 
                  timer_id=timeSetEvent(1000,0,Port,100,TIME_PERIODIC);
 
                   CRbyte=13;
                   LRbyte=10;
                   buf="$KE,ADC,1" + char (CRbyte) + char (LRbyte);
 
                   int len=strlen(buf.c_str());
                   bufwr= *buf.c_str();
 
                   WriteFile(ComPort, &bufwr, len, &NumWrt, NULL);
 
                   MessageBox(NULL, "Open Port", "IFORMATION", MB_OK);
 
                   //timer_id=timeSetEvent(1000,0,Port,100,TIME_PERIODIC);
          }
 
}
//---------------------------------------------------------------------------
Огромная благодарность за помощь! Спасибо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.04.2011, 20:14
Ответы с готовыми решениями:

Перевод кода из Delphi в C++ Builder / C++ Builder
Кто нибудь сможет помочь перевести проект с делфи на билдер? Выкладываю исходники на делфи. procedure TForm1.SpeedButton1Click(Sender:...

[C++ Builder] прога для получения времени с временного сервера
программа должна получать время с сервера временного и записывать полученное время в файл!!! подскажите что-нибудь, кто-нибудь!!...

c Delphi в Builder C++
Всем привет, кто сможет перевести на С++? unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes,...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.04.2011, 20:14
Помогаю со студенческими работами здесь

з delphi на builder
Всем привет! У меня есть код делфи помогите переделать в Builder Зарание спасибо \\ Form1 procedure TFmPTC.bbOpenDatClick(Sender:...

Delphi в C++ builder
Переведите этот кусок кода на Делфи в Си Билдер. Помогите кто может. unit MainUnit; interface uses Windows, Messages,...

Из Delphi в С++ Builder
Всем привет) Всем добра) Помогите преобразовать пару строчек из Delphi в С++ procedure TKrossvord.BitBtn1Click(Sender: TObject); ...

С Delphi на С++ Builder 6
Нужно перевести код написаный на Delphi в код С++ Builder 6 с этого сайта: ...

C Delphi на C++ Builder
unit fFormula; interface const MAX = 100; tkOpen = 1; tkClose = 2; tkPlus = 3;


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru