0 / 0 / 0
Регистрация: 13.10.2009
Сообщений: 62

Установка компонента TComPort

13.10.2009, 03:37. Показов 15944. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня такой вопрос. При инсталляции компонента TComPort в C++Builder 2007 появляется ошибка: Unable to open file 'DSGNCPOTLIB2007.bpi. Такого файла я у себя не нашел. При попытке стереть упоминания о нем в файле проекта, выдалась другая ошибка, якобы этот файл все-таки нужен. Кто-нибудь знает, в чем может быть проблема, или есть у кого-нибудь такой файл?
Спасибо.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.10.2009, 03:37
Ответы с готовыми решениями:

Установка компонента TPngImage
Доброе утро/День/Вечер!!! Может кто небуть подробно расписать, или скинуть источника как это делается.)) Вообще нужно как то установить...

Установка Delphi-компонента TChromium в Билдер
Второй день бьюсь, подскажите, пожалуйста, как установить Delphi компонен в C++ Builder

Установка фокуса ячейки компонента ValueListEditor
По списку идет запись значений переменных в массив посредством Cells.ToDouble() . В случае ошибки перевода вылетит MessageBox. Вопрос:...

14
0 / 0 / 0
Регистрация: 13.10.2009
Сообщений: 62
13.10.2009, 23:46  [ТС]
Может кто-нибудь подскажет другой хороший компонент для работы с ComPortoм в C++ Builder2007?
0
0 / 0 / 0
Регистрация: 12.02.2009
Сообщений: 13
26.05.2010, 10:00
Только не ТComPort ,а TCommPort наверное.Я установил в Builder 6 правда.
Я нашел на
 Комментарий модератора 
Ссылка удалена.

Установил,открыть ком порт удалось.Померил осциллом сигнал на выводе ком порта.
А как передать данные в него????
Нифига нет описания и тестовая прога не компилируется.
Кто знает как пользоваться компонентом отзовитьесь!!!!!Бьюсь уже не один день!!!
Описание свойств компонента скинте,если есть.
Под Вин апи большая программа получается и трудная для понимания....
Готовые есть с Вин Апи но мне не надо этих всяких Memo и Edit - наворотов, там что написаны.
Нужно нажать на кнопочку,передать символ в Com port ну и т д.
0
221 / 135 / 48
Регистрация: 12.04.2010
Сообщений: 248
26.05.2010, 10:57
Ну если просто послать байт в ком-порт, то проще вобще без компонентов
Вот из какой-то моей старой проги....
Инициализируешь порт в InitCom() и отправляешь байт SendByte().
После использования закрываешь порт CloseHandle(HComm);
Все предельно просто.
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
bool PortInit = false;
char ComBuf[1024];
int InBuf, ReadPtr;
HANDLE HComm;
 
 
void SendByte(byte b)
{      unsigned long sended;bool t;
        if (PortInit) {
           t=WriteFile(HComm,&b,1,&sended,NULL);
           if ((!t)|(sended != 1))
                MessageDlg("Не могу записать в порт!",mtError,TMsgDlgButtons() << mbOK, 0);       
}
 
void InitCom(void)
{
        _DCB Mode;
        _COMMTIMEOUTS TimeOuts;
 
      //инициализация
     if (!PortInit){
        HComm = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE,  0, 0,  OPEN_EXISTING,  0,   0);
        GetCommState(HComm,&Mode);
    Mode.BaudRate= 115200;
    Mode.ByteSize = 8;
    Mode.Parity = 0;
    Mode.StopBits = 2;
 
    if (HComm==INVALID_HANDLE_VALUE)
     {
         MessageDlg("Не могу открыть порт.",mtError,TMsgDlgButtons() << mbOK, 0);
     } else {
    SetCommState ( HComm, &Mode );
    // Устанавливаем таймауты
 
    TimeOuts.ReadIntervalTimeout = MAXLONG;
    TimeOuts.ReadTotalTimeoutMultiplier = 100;
    TimeOuts.ReadTotalTimeoutConstant = 100;
    TimeOuts.WriteTotalTimeoutConstant=100;
    TimeOuts.WriteTotalTimeoutMultiplier=100;
 
    SetCommTimeouts(HComm,&TimeOuts);
    PortInit=true;}
}
}
0
0 / 0 / 0
Регистрация: 12.02.2009
Сообщений: 13
26.05.2010, 11:41
Что то не пошло.Вот код://---------------------------------------------------------------------------

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
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 
 
bool PortInit = false;
char ComBuf[1024];
int InBuf, ReadPtr;
HANDLE HComm;
 
 
void SendByte(byte b)
{      unsigned long sended;bool t;
        if (PortInit) {
           t=WriteFile(HComm,&b,1,&sended,NULL);
           if ((!t)|(sended != 1))
                MessageDlg("Не могу записать в порт!",mtError,TMsgDlgButtons() << mbOK, 0);       
}
 
void InitCom(void)
{
        _DCB Mode;
        _COMMTIMEOUTS TimeOuts;
 
      //инициализация
     if (!PortInit){
        HComm = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE,  0, 0,  OPEN_EXISTING,  0,   0);
        GetCommState(HComm,&Mode);
    Mode.BaudRate= 115200;
    Mode.ByteSize = 8;
    Mode.Parity = 0;
    Mode.StopBits = 2;
 
    if (HComm==INVALID_HANDLE_VALUE)
     {
         MessageDlg("Не могу открыть порт.",mtError,TMsgDlgButtons() << mbOK, 0);
     } else {
    SetCommState ( HComm, &Mode );
    // Устанавливаем таймауты
 
    TimeOuts.ReadIntervalTimeout = MAXLONG;
    TimeOuts.ReadTotalTimeoutMultiplier = 100;
    TimeOuts.ReadTotalTimeoutConstant = 100;
    TimeOuts.WriteTotalTimeoutConstant=100;
    TimeOuts.WriteTotalTimeoutMultiplier=100;
 
    SetCommTimeouts(HComm,&TimeOuts);
    PortInit=true;}
    }
   }
 
}
//---------------------------------------------------------------------------
ошибки:
Build
[C++ Error] Unit1.cpp(29): E2141 Declaration syntax error
[C++ Error] Unit1.cpp(71): E2139 Declaration missing ;
[C++ Error] Unit1.cpp(71): E2134 Compound statement missing }
[C++ Warning] Unit1.cpp(71): W8004 'PortInit' is assigned a value that is never used

А все-таки русского,хотя бы какого нить описания компонента TCommPort нет??
Или компонента,работающего и help а к нему?А?
Поможите,если сможете.
0
221 / 135 / 48
Регистрация: 12.04.2010
Сообщений: 248
26.05.2010, 11:46

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
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
bool PortInit = false;
char ComBuf[1024];
int InBuf, ReadPtr;
HANDLE HComm;
 
 
void SendByte(byte b)
{ unsigned long sended;bool t;
if (PortInit) {
t=WriteFile(HComm,&b,1,&sended,NULL);
if ((!t)|(sended != 1))
MessageDlg("Не могу записать в порт!",mtError,TMsgDlgButtons() << mbOK, 0);
}
 
void InitCom(void)
{
_DCB Mode;
_COMMTIMEOUTS TimeOuts;
 
//инициализация
if (!PortInit){
HComm = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
GetCommState(HComm,&Mode);
Mode.BaudRate= 115200;
Mode.ByteSize = 8;
Mode.Parity = 0;
Mode.StopBits = 2;
 
if (HComm==INVALID_HANDLE_VALUE)
{
MessageDlg("Не могу открыть порт.",mtError,TMsgDlgButtons() << mbOK, 0);
} else {
SetCommState ( HComm, &Mode );
// Устанавливаем таймауты
 
TimeOuts.ReadIntervalTimeout = MAXLONG;
TimeOuts.ReadTotalTimeoutMultiplier = 100;
TimeOuts.ReadTotalTimeoutConstant = 100;
TimeOuts.WriteTotalTimeoutConstant=100;
TimeOuts.WriteTotalTimeoutMultiplier=100;
 
SetCommTimeouts(HComm,&TimeOuts);
PortInit=true;}
}
}
 
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
       InitCom();//инициализируем порт
       SendByte(0xFE);//посылаем байт 0xFE
       CloseHandle(HComm);//закрываем порт
}
//---------------------------------------------------------------------------
0
0 / 0 / 0
Регистрация: 12.02.2009
Сообщений: 13
26.05.2010, 12:55
ЭЭЭхххх....
Все равно:
Build
[C++ Error] Unit1.cpp(32): E2141 Declaration syntax error
[C++ Error] Unit1.cpp(79): E2139 Declaration missing ;
[C++ Error] Unit1.cpp(79): E2134 Compound statement missing }

Видно не судьба нам обогнать японцев в электронике.
А я еще хотел принимать символы потом и еще по определённому алгоритму и записывать в разные мемо.
Даже сцуко символ не передается.
0
221 / 135 / 48
Регистрация: 12.04.2010
Сообщений: 248
26.05.2010, 13:39
Ну неужели трудно прочитать то что говорит компилятор?
Не хватает закрывающей фигурной скобки "}" в строке 30 или 29... (Нужно закрыть функцию SendByte()). Куда-то она потерялась.

Цитата Сообщение от vladi Посмотреть сообщение
Видно не судьба нам обогнать японцев в электронике.
С таким подходом точно не судьба...

Вот примерно так можно читать из ком-порта.
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
//очистка буфера приема
void ClearCB(void){
while(ReadMessages()!=0);
for(int i=0;i<10000;i++)ComBuf[i]=0;
InBuf=0;
ReadPtr=0;
}
//прием сообщения в буфер ComBuf
int ReadMessages(void)
{
  unsigned long ErrorCode;
  COMSTAT StatPort;
  unsigned long BytesIn;
  unsigned long Readed;
     Readed=0;
     ClearCommError(HComm, &ErrorCode, &StatPort);
     BytesIn = StatPort.cbInQue;
     if (BytesIn>0 ){
       if (BytesIn>sizeof(ComBuf)-1)BytesIn = sizeof(ComBuf)-1;
       ReadFile(HComm,&ComBuf[ReadPtr],BytesIn,&Readed,NULL);
       recv+=Readed;
       ReadPtr+=Readed;
       InBuf+=Readed;
}
return Readed;
}
Вообще почти вся работа с ком-портом сводится к работе с ним как с файлом в простейшем случае.


Не в тему:... помойму люди разучаются думать...
1
0 / 0 / 0
Регистрация: 01.07.2010
Сообщений: 38
16.07.2010, 13:05
Мне понадобилось тоже отправлять побайтно в ком-порт, но в асинхронном режиме. Пока флаг FILE_FLAG_OVERLAPPED был равен 0, все вроде выполнялось, по крайней мере компилировалось без ошибок и осциллографом отмечал сигнал на TXD (правда, почему-то не было реакции на RXD).

Стоило установить FILE_FLAG_OVERLAPPED, как при посылке байта выдает сообщение "Не могу записать в порт".

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
bool PortInit = false;
char ComBuf[1024];
int InBuf, ReadPtr;
static int rs232_byte=0; //статическую – потому что потом надо будет подобрать байт в цикле
HANDLE HComm;
DWORD nb=0;
OVERLAPPED Overlapped = {0,0,0,0,0};
 
void InitCom(int _Baud, int _ByteSize, int _Parity, int _StopBits);
 
void SendByte(byte b)
{ 
  unsigned long sended;
  bool t;
 if (PortInit)
 {
  t=WriteFile(HComm,&b,1,&sended,&Overlapped);
  if ((!t)|(sended != 1))
// также здесь пробовал просто « if (sended != 1) » - все равно не пишет
  MessageDlg("Не могу записать в порт",mtError,TMsgDlgButtons() << mbOK, 0);
 }
}
 
void InitCom(int _Baud, int _ByteSize, int _Parity, int _StopBits)
{
 _DCB Mode;
 _COMMTIMEOUTS TimeOuts;
 
 //Инициализация порта
 if (!PortInit)
 {
  HComm = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);
  GetCommState(HComm,&Mode);
  Mode.BaudRate= _Baud;
  Mode.ByteSize = _ByteSize;
  Mode.Parity = _Parity;
  Mode.StopBits = _StopBits;
 
  if (HComm==INVALID_HANDLE_VALUE)
  {
   MessageDlg("Не могу открыть порт",mtError,TMsgDlgButtons() << mbOK, 0);
  }
  else
  {
   SetCommState ( HComm, &Mode );
 
   // Устанавливаем тайм-ауты
   TimeOuts.ReadIntervalTimeout = MAXLONG;
   TimeOuts.ReadTotalTimeoutMultiplier = 100;
   TimeOuts.ReadTotalTimeoutConstant = 100;
   TimeOuts.WriteTotalTimeoutConstant=100;
   TimeOuts.WriteTotalTimeoutMultiplier=100;
 
   SetCommTimeouts(HComm,&TimeOuts);
   PortInit=true;}
  }
}
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
       InitCom(9600, 8, 0, 1);//инициализация
       rs232_byte=0x46; //пусть отправляемый байт равен этому значению
       SendByte(rs232_byte);//отправим байт
}

Чего не хватает?


И еще вопрос - а разве функция WriteFile() что-либо возвращает? (я про t=WriteFile() в функции SendByte(byte b) )

Добавлено через 21 час 26 минут
В строке 19 пробовал также
if (sended ==0)
0
0 / 0 / 0
Регистрация: 13.10.2009
Сообщений: 62
22.02.2012, 13:47  [ТС]
В продолжение темы:
нет ли компонента для работы с компортом, поддерживаемого Builder XE?
Последний вариант ComPort Library от Dejan Crnila поддерживает только дельфи последней версии, и билдер - нет. Или как можно сконвертировать его?
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
22.02.2012, 14:06
COM-порт в Windows
Работа с последовательными портами (Статья)
Настройка порта:
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
HANDLE TForm1::OpenAndSetupPort (UnicodeString APortName, int ASpeed, int AByteSize, int AParity, int AStopBits)
{
HANDLE ComHandle;
DCB ComDCB;
COMMTIMEOUTS ComTimes;
UnicodeString Msg = "\\\\.\\" + APortName.UpperCase();
 
ComHandle = CreateFile(Msg.t_str(), GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);
if (ComHandle == INVALID_HANDLE_VALUE)
  {
  Msg = "Ошибка при открытии порта " + APortName + ":\n" + GetLastError(); goto OnError;
  }
 
ZeroMemory(&ComDCB, sizeof(ComDCB));
ComDCB.DCBlength = sizeof(ComDCB);
if (!GetCommState(ComHandle, &ComDCB))
  {
  Msg = "Ошибка при получении параметров порта " + APortName + ":\n" + GetLastError(); goto OnError;
  }
ComDCB.BaudRate = ASpeed;
ComDCB.ByteSize = AByteSize;
ComDCB.Parity   = AParity;
ComDCB.StopBits = AStopBits;
ComDCB.fBinary  = 1;
ComDCB.fParity  = (ComDCB.Parity != NOPARITY) ? 1 : 0;
ComDCB.fOutxCtsFlow = 0;
ComDCB.fOutxCtsFlow = false;
ComDCB.fOutxDsrFlow = false;
ComDCB.fDtrControl = DTR_CONTROL_DISABLE;
ComDCB.fDsrSensitivity = false;
ComDCB.fNull = false;
ComDCB.fRtsControl = RTS_CONTROL_DISABLE;
ComDCB.fOutX = 0;
ComDCB.fInX = 0;
ComDCB.fAbortOnError = false;
if (!SetCommState(ComHandle, &ComDCB))
  {
  Msg = "Ошибка при настройке параметров порта " + APortName + ":\n" + GetLastError(); goto OnError;
  }
 
if (!GetCommTimeouts(ComHandle, &ComTimes))
  {
  Msg = "Ошибка при получении таймаутов порта " + APortName + ":\n" + GetLastError(); goto OnError;
  }
ComTimes.ReadIntervalTimeout         = MAXDWORD;
ComTimes.ReadTotalTimeoutMultiplier  = 0;
ComTimes.ReadTotalTimeoutConstant    = 300;
ComTimes.WriteTotalTimeoutMultiplier = 0;
ComTimes.WriteTotalTimeoutConstant   = 0;
if (!SetCommTimeouts(ComHandle, &ComTimes))
  {
  Msg = "Ошибка при настройке таймаутов порта " + APortName + ":\n" + GetLastError(); goto OnError;
  }
 
SetupComm(ComHandle, 1024, 1024);
PurgeComm(ComHandle, PURGE_RXCLEAR | PURGE_TXCLEAR);
 
ErrorInfo = "Успешно завершено";
return ComHandle;
 
OnError:
if (ComHandle != INVALID_HANDLE_VALUE) CloseHandle(ComHandle);
 
ErrorInfo = Msg;
return NULL;
}
Отправка в порт:
C++
1
2
3
4
5
6
7
8
9
DWORD temp;
 BYTE comanda[4];
 comanda[0] = 0x00;
 comanda[1] = 0x00;
 comanda[2] = 0x01;
 comanda[3] = 0xB0;
 
 WriteFile(ComHandle, &comanda, 4, &temp, NULL);  //Отправляем команду прибору
 ReadFile(ComHandle, &comanda, 4, &temp, NULL);
UnicodeString применяю по причине использования Builder XE: функция CreateFile в первом параметре требует wchar_t.
0
0 / 0 / 0
Регистрация: 13.10.2009
Сообщений: 62
22.02.2012, 15:19  [ТС]
Да, наверно ничего не поделаешь, придется осваивать API ф-ции...)
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
22.02.2012, 15:20
мне кажется, что так более гламурно
0
117 / 74 / 6
Регистрация: 23.01.2012
Сообщений: 186
22.02.2012, 16:00
Вот Вам класс для начало изучение API функций Com порта.
P.S. Вас должен интересовать только класс SerialPort, есть небольшие рудименты от других классов, просто удалите их.
P.P.S. коллега говорит, что смог его запустить на Builder XE (писал этот класс лет 7 назад, поэтому цитирую классика LK, не помню как точно у него, но смысл такой: "поддержки кода не осуществляю" )
Вложения
Тип файла: rar COM_PORT.RAR (3.0 Кб, 189 просмотров)
0
0 / 0 / 0
Регистрация: 13.10.2009
Сообщений: 62
22.02.2012, 16:06  [ТС]
ОК, спасибо. Посмотрим.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.02.2012, 16:06
Помогаю со студенческими работами здесь

Удаление компонента и установка нового (rad studio)
Как удалить установленный компонент в Rad Studio? Как установить AlphaSkins для C++ XE7?

Установка компонента TComPort
Скачал компонент TComPort для работы с ком-портом (качал с соусфоржа), а он не усланвливается, в смысле не компилируется. Ругается на uses...

Установка компонента TCommPortDriver
Здравствуйте, возникла такая проблема, раньше стояла винда хр и на ней стояла Delphi7_Lite_Full_Edition_Setup_7.3.4.3_Build_20110801 и не...

Установка компонента
Как установить данный компонент на Delphi7? помогите, с ним куча проблем

Установка компонента
Помогите пожалуйста, не могу установить компонент. У меня Delphi 10 seattle . Вот такие ошибки: После нажатия OK: Сам...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

Новые блоги и статьи
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru