Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/25: Рейтинг темы: голосов - 25, средняя оценка - 4.88
 Аватар для Kizer
80 / 82 / 36
Регистрация: 20.11.2009
Сообщений: 326

Общение с Com-портом. Программирование для чтения с мультиметра

30.06.2014, 17:07. Показов 5106. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребята привет! Я уже описывал случившуюся у меня проблему здесь. Но пока ответа не получил.
Вводная такая. У меня есть мультиметр, который при обращении к нему байтовой командой (55 55 00 00 AA) должен присылать пакет в 20 байт с ответом, но этого не происходит.

Код:
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
using System;
using System.Collections.Generic;
using System.IO.Ports;
 
namespace appa109
{
    class Program
    {
        //configuration for n109
        static void Config(SerialPort port)
        {
            port.BaudRate = 9600;
            port.StopBits = StopBits.One;
            port.Parity = Parity.None;
            port.DataBits = 8;
            port.Handshake = Handshake.None;
            
        }
 
       static void StartReading(SerialPort port)
        { 
 
           byte[] command = new byte[5];
         
            command[0] = Convert.ToByte(0x55);
            command[1] = Convert.ToByte(0x55);
            command[2] = Convert.ToByte(0x00);
            command[3] = Convert.ToByte(0x00);
            command[4] = Convert.ToByte(0xAA);
            port.Write(command, 0, command.Length);
            
 
           
          
        }
        /// <summary>
        /// function for reading data from port
        /// </summary>
        /// <param name="port"></param>
        /// <returns> 19 byte of data
        /// 1-st and 2-nd: must be 0x55
        /// 3-rd and 4-th: must be 0x00 and 0x0E
        /// 5-th: rotor code;
        /// 6-th: blue code
        /// 7-th: Key code
        /// 8-th : Range code;
        /// 9-13: Main reading
        /// 14-18: sub reading
        /// 19: check sum
        /// </returns>
        static byte[] Read(SerialPort port)
        {
            byte[] Data = new byte[20];
 
            port.Read(Data, 0, 19);
 
            return Data;
        }
        
        /// <summary>
        /// out data to console
        /// </summary>
        static void ShowResult(byte[] Data)
        {
            foreach (byte b in Data)
            {
                Console.Write(Convert.ToString(b, 16) + " ");
            }
        }
 
        private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
        {
            SerialPort sp = (SerialPort)sender;
            byte[] indata = Read(sp);
            Console.WriteLine("Data Received:");
            ShowResult(indata);
            Console.ReadLine();
        }
 
        static void Main(string[] args)
        {
            SerialPort Port = new SerialPort("COM7");
            Config(Port);
 
            Port.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
 
            Port.Open();
 
            while (true)
            {
                StartReading(Port);
 
                System.Threading.Thread.Sleep(700);
            }            
            Port.Close();
            
            
        }
    }
}
Прошу помочь разобраться почему ответ не приходит, заранее спасибо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.06.2014, 17:07
Ответы с готовыми решениями:

Общение с com-портом
Здравствуйте. Мне нужно передавать и принимать информацию через компорт. Как это делалось в Win98, я знаю, делал программу. Нужно это...

Visual C++ (MFC), Работа с COM портом - как узнать есть данные или нет? для чтения
Подключаюсь к COM порту, запускаю процесс чтения порта в поражденном потке, поток виснит до того как порт приймит данные а в это время...

Неисправность осциллографа-мультиметра С1-112 в режиме "мультиметра"
Здравствуйте. Вот описание неисправности осциллографа которую я уже устранил. Но теперь есть другая проблема с мультиметром. Цифры на нём...

16
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
30.06.2014, 17:51
Kizer, вы через монитор порта не пробовали смотреть, приходят вообще данные в ответ на ваш запрос к устройству?
0
 Аватар для Kizer
80 / 82 / 36
Регистрация: 20.11.2009
Сообщений: 326
30.06.2014, 17:59  [ТС]
insite2012, пробовал - не приходят. В первом посту есть ссылка на тему, где я выкладывал скриншоты. Такое ощущение, что команда не правильная, но все посылаю, как в описании протокола фирмы изготовителя сказано.
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
30.06.2014, 18:10
Kizer, я сейчас накидаю вам свой вариант реализации задачи, попробуйте. И дайте ссылку на описание протокола обмена с этим устройством.
0
 Аватар для Kizer
80 / 82 / 36
Регистрация: 20.11.2009
Сообщений: 326
30.06.2014, 18:38  [ТС]
insite2012, протокол обмена:
Вложения
Тип файла: pdf Протокол обмена APPA-109N.pdf (96.5 Кб, 15 просмотров)
0
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
30.06.2014, 20:53
Kizer, вот. Настройки порта только установите как надо.
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
/*
 * Сделано в SharpDevelop.
 * Пользователь: Administrator
 * Дата: 30.06.2014
 * Время: 17:51
 */
using System;
using System.IO.Ports;
using System.Threading;
using System.Collections.Generic;
 
namespace Kizer
{
    class Program
    {
        public static void Main(string[] args)
        {
            // TODO: Implement Functionality Here
            string portName=string.Empty;
            Console.WriteLine("Введите номер порта: ");
            portName=Console.ReadLine();
            
            MultimeterReader reader=new MultimeterReader(portName);
            reader.ReadDataFromPort();
            
            Console.ReadLine();
        }
    }
    public class MultimeterReader
    {
        SerialPort port;
        
        public MultimeterReader(string portName)
        {
            port=new SerialPort();
            port.PortName=portName;
            port.BaudRate=9600;
            port.ReadTimeout=500;
        }
        public void ReadDataFromPort()
        {
            byte[] inData={0x55, 0x55, 0x00, 0x00, 0xaa};
            List<byte> outData=new List<byte>();
            
            try
            {
                port.Open();
                if(!ReadDataBlock(inData, outData,20))
                {
                    Console.WriteLine("Устройство не ответило на запрос!");
                }
                else
                {
                    string outString=BitConverter.ToString(outData.ToArray());
                    Console.WriteLine(outString);
                }
            }
            catch(Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                port.Close();
            }
        }
        private bool ReadDataBlock(byte[] writeBlock, List<byte> outBlock,int count)
        {
            for(int i=0;i<=5;i++)
            {
                port.Write(writeBlock,0,writeBlock.Length);
                
                int waitIndex=0;
                port.DiscardInBuffer();
                
                while(port.BytesToRead!=count)
                {
                    Thread.Sleep(100);
                    waitIndex++;
                    if(waitIndex==5)
                        break;
                }
                
                if(i==5)
                    return false;
            }
            
            byte[] temp=new Byte[count];
            port.Read(temp,0,count);
            outBlock.AddRange(temp);
            return true;
        }
    }
}
Добавлено через 2 часа 15 минут
PS. В моем примере поменяйте местами строки 71 и 74.
1
 Аватар для raxper
10236 / 6614 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
30.06.2014, 22:20
У нас не принято создавать дубликаты тем.
0
 Аватар для Kizer
80 / 82 / 36
Регистрация: 20.11.2009
Сообщений: 326
01.07.2014, 11:23  [ТС]
insite2012, спасибо, но к сожалению результата не принесло.

лог прикладываю в аттач

raxp, я прошу прощения, просто в Вашем разделе я спрашивал собственно про протокол, а здесь я усомнился в правильности программирования на ЯП.
Миниатюры
Общение с Com-портом. Программирование для чтения с мультиметра  
Вложения
Тип файла: txt appaLog.txt (7.4 Кб, 10 просмотров)
0
 Аватар для raxper
10236 / 6614 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
01.07.2014, 14:39
В первом посту вы отрепостили ту же ошибку, на которую указал в предыдущей теме - после запроса вы закрыли порт и по-прежнему используете слипы.

...вот проблема видна в вашем логе по последнему коду:
IRP_MJ_WRITE Serial0 SUCCESS Length 5: 55 55 00 00 AA
46 3.00214168 appa109.vshost IOCTL_SERIAL_WAIT_ON_MASK Serial0 SUCCESS
47 0.00000338 appa109.vshost IOCTL_SERIAL_GET_COMMSTATUS Serial0 SUCCESS
48 0.00000460 appa109.vshost IOCTL_SERIAL_GET_COMMSTATUS Serial0 SUCCESS
49 0.00000614 appa109.vshost IOCTL_SERIAL_GET_COMMSTATUS Serial0 SUCCESS
50 0.00000460 appa109.vshost IOCTL_SERIAL_GET_COMMSTATUS Serial0 SUCCESS
51 0.00000368 appa109.vshost IOCTL_SERIAL_GET_COMMSTATUS Serial0 SUCCESS
52 0.00000491 appa109.vshost IOCTL_SERIAL_PURGE Serial0 SUCCESS Purge: RXABORT RXCLEAR
53 0.00002486 appa109.vshost IRP_MJ_WRITE Serial0 SUCCESS Length 5: 55 55 00 00 AA
вы послали запрос и тут же подчистили приемный буфер - Purge: RXABORT RXCLEAR через port.DiscardInBuffer(). И снова слип, неужели использовать собственное событие обертки SerialPort остается проблемой?

Необходимости создания новой темы не было, язык программирования ни при чем.
1
 Аватар для Kizer
80 / 82 / 36
Регистрация: 20.11.2009
Сообщений: 326
02.07.2014, 16:05  [ТС]
raxp, спасибо Вам за Ваше терпение, но вот не понимаю я, хоть убейте вашу фразу про обертку. Если я пишу код с обработчиком события:
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
using System;
using System.Collections.Generic;
using System.IO.Ports;
 
namespace appa109
{
    class Program
    {
        //configuration for n109
        static void Config(SerialPort port)
        {
            port.BaudRate = 9600;
            port.StopBits = StopBits.One;
            port.Parity = Parity.None;
            port.DataBits = 8;
            port.Handshake = Handshake.None;
 
        }
 
        //start reading command
        static void StartReading(SerialPort port)
        {
            byte[] command = new byte[5];
 
            command[0] = Convert.ToByte(0x55);
            command[1] = Convert.ToByte(0x55);
            command[2] = Convert.ToByte(0x00);
            command[3] = Convert.ToByte(0x00);
            command[4] = Convert.ToByte(0xAA);
 
            port.Write(command, 0, command.Length);
        }
        /// <summary>
        /// function for reading data from port
        /// </summary>
        /// <param name="port"></param>
        /// <returns> 19 byte of data
        /// 1-st and 2-nd: must be 0x55
        /// 3-rd and 4-th: must be 0x00 and 0x0E
        /// 5-th: rotor code;
        /// 6-th: blue code
        /// 7-th: Key code
        /// 8-th : Range code;
        /// 9-13: Main reading
        /// 14-18: sub reading
        /// 19: check sum
        /// </returns>
        static byte[] Read(SerialPort port)
        {
            byte[] Data = new byte[20];
 
            port.Read(Data, 0, 19);
 
            return Data;
        }
 
        /// <summary>
        /// out data to console
        /// </summary>
        static void ShowResult(byte[] Data)
        {
            foreach (byte b in Data)
            {
                Console.Write(Convert.ToString(b, 16) + " ");
            }
        }
 
        private static void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
        {
            SerialPort sp = (SerialPort)sender;
            byte[] indata = Read(sp);
            Console.WriteLine("Data Received:");
            ShowResult(indata);
            Console.ReadLine();
        }
 
        static void Main(string[] args)
        {
            SerialPort Port = new SerialPort("COM7");
            Config(Port);
 
            Port.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
 
            Port.Open();
            StartReading(Port);
 
            Console.ReadLine();
            Console.ReadKey();
            Port.Close();
 
 
        }
    }
}

То результат получается тот же. Я не вижу данных, которые отдает мне мультиметр. Лог приложен.
Вложения
Тип файла: txt Appa109n.txt (4.6 Кб, 4 просмотров)
0
 Аватар для raxper
10236 / 6614 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
02.07.2014, 20:52
...так вы ничего не изменили:
IRP_MJ_WRITE ProlificSerial0 SUCCESS Length 5: 55 55 00 00 AA
IRP_MJ_FLUSH_BUFFERS ProlificSerial0 SUCCESS
IRP_MJ_FLUSH_BUFFERS ProlificSerial0 SUCCESS
IOCTL_SERIAL_PURGE ProlificSerial0 SUCCESS Purge: RXABORT RXCLEAR
IOCTL_SERIAL_PURGE ProlificSerial0 SUCCESS Purge: TXABORT TXCLEAR
IRP_MJ_CLEANUP ProlificSerial0 SUCCESS
IRP_MJ_CLOSE ProlificSerial0 SUCCESS
по логу: послали запрос, очистили приемный буфер и закрыли порт. Смотрим что у вас в коде: cконфигурировали порт, назначили событие приема, открыли порт, послали запрос, поставили ожидание ввода в консоли, закрыли порт. Вы уверены, что ваше ожидание ввода с консоли не тормозит все приложение и поток приема данных SerialPort?
1
Эксперт .NET
 Аватар для insite2012
5548 / 4311 / 1218
Регистрация: 12.10.2013
Сообщений: 12,371
Записей в блоге: 2
02.07.2014, 21:25
Цитата Сообщение от Kizer Посмотреть сообщение
не понимаю я, хоть убейте вашу фразу про обертку.
Kizer, ятд, что поскольку ув. raxp, кодирует на низкоуровневых ЯП, то для него наш SeriаlPort-всего лишь обертка над реальным портом.
По теме-вы поменяли те строки в моем коде, про которые я сказал? Если нет-поменяйте и попробуйте.
Цитата Сообщение от insite2012 Посмотреть сообщение
PS. В моем примере поменяйте местами строки 71 и 74.
1
 Аватар для Kizer
80 / 82 / 36
Регистрация: 20.11.2009
Сообщений: 326
03.07.2014, 01:27  [ТС]
raxp,
Вы уверены, что ваше ожидание ввода с консоли не тормозит все приложение и поток приема данных SerialPort?
Не уверен. Чем заменить? В примере с МСДН приведен по крайней мере такой случай: экзампл

insite2012, да в том-то и дело, что поменял...
0
 Аватар для raxper
10236 / 6614 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
03.07.2014, 07:36
...на форуме был пример отдельным потоком без этого события:
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
static SerialPort sp;
static List<byte> sBuffer = new List<byte>();
static void Main(string[] args)
{
    sp = new SerialPort
    {
        PortName = "COM1",
        BaudRate = 9600,
        DataBits = 8,
        Parity = Parity.Odd,
        StopBits = StopBits.One,
        ReceivedBytesThreshold = 1
    };
    sp.Open();
    Read();
}
 
static void Read()
{
    bool boolRead = true;
    while (boolRead)
    {
        try
        {
            sBuffer.Add((byte)sp.BaseStream.ReadByte());
            if (sp.BytesToRead == 0)
                if (sBuffer.Count != 0)
                    Readed();
        }
        catch (TimeoutException)
        {
            Console.WriteLine("Timeout");
        }
    }
}
 
private static void Readed()
{
    Console.WriteLine(BitConverter.ToString(sBuffer.ToArray()));
    sBuffer.Clear();
}
0
 Аватар для Kizer
80 / 82 / 36
Регистрация: 20.11.2009
Сообщений: 326
03.07.2014, 14:19  [ТС]
raxp, я особо не поменял ничего в представленном Вами коде. Добавил только отсылку команды чтения (строка 18 и 19) и изменил настройки порта. Получил следующее:

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
class Program
    {
        static SerialPort sp;
        static List<byte> sBuffer = new List<byte>();
        static void Main(string[] args)
        {
            sp = new SerialPort
            {
                PortName = "COM7",
                BaudRate = 9600,
                DataBits = 8,
                Parity = Parity.None,
                StopBits = StopBits.One,
                ReceivedBytesThreshold = 1
            };
            sp.Open();
            
            byte[] inData = { 0x55, 0x55, 0x00, 0x00, 0xaa };
            sp.Write(inData, 0, inData.Length);
 
            Read();
        }
 
        static void Read()
        {
            bool boolRead = true;
            while (boolRead)
            {
                try
                {
                    sBuffer.Add((byte)sp.BaseStream.ReadByte());
                    if (sp.BytesToRead == 0)
                        if (sBuffer.Count != 0)
                            Readed();
                }
                catch (TimeoutException)
                {
                    Console.WriteLine("Timeout");
                }
            }
        }
 
        private static void Readed()
        {
            Console.WriteLine(BitConverter.ToString(sBuffer.ToArray()));
            sBuffer.Clear();
        }
    }
К сожалению результата по прежнему не принесло. Программа ожидает ответа от порта... Лог записан и прикреплен в аттаче.
Вложения
Тип файла: log Ap109New.LOG (4.1 Кб, 4 просмотров)
0
 Аватар для Kizer
80 / 82 / 36
Регистрация: 20.11.2009
Сообщений: 326
04.08.2014, 15:38  [ТС]
Ребята, а вот важно ли отличие в параметре EOF при настройке порта? Может ли порт получать символ конца файла на вход и из-за этого пренебрегать данными?

raxp, еще раз спасибо Вам за предоставленную библиотеку.
0
 Аватар для Kizer
80 / 82 / 36
Регистрация: 20.11.2009
Сообщений: 326
11.08.2014, 12:11  [ТС]
Оставлю здесь код, на который прибор ответил тем, чем должен был ответить. Большое спасибо всем за помощь и уделенное время.

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
using System;
using System.Collections.Generic;
using System.IO.Ports;
 
namespace appa109
{
    class Program
    {
        static SerialPort sp;
        static List<byte> sBuffer = new List<byte>();
        static void Main(string[] args)
        {
            sp = new SerialPort
            {
                PortName = "COM1",
                BaudRate = 9600,
                DataBits = 8,
                Parity = Parity.None,
                StopBits = StopBits.One,
                Handshake = Handshake.XOnXOff,
                RtsEnable = true
                
            };
            sp.Open();
            
            byte[] inData = { 0x55, 0x55, 0x00, 0x00, 0xaa };
            sp.Write(inData, 0, inData.Length);
 
            Read();
 
        }
 
        ~Program()
        {
            if (sp != null && sp.IsOpen)
            {
                sp.Close();
            }
        }
 
        static void Read()
        {
            bool boolRead = true;
            while (boolRead)
            {
                try
                {
                    sBuffer.Add((byte)sp.BaseStream.ReadByte());
                    if (sp.BytesToRead == 0)
                        if (sBuffer.Count != 0)
                            Readed();
                }
                catch (TimeoutException)
                {
                    Console.WriteLine("Timeout");
                }
            }
        }
 
        private static void Readed()
        {
            Console.WriteLine(BitConverter.ToString(sBuffer.ToArray()));
            sBuffer.Clear();
        }
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.08.2014, 12:11
Помогаю со студенческими работами здесь

щупы для мультиметра
Здравствуйте! Мультиметр UT10A. Случилась беда отвалился провод и прямо у самого щупа. Посмотрел у себя в городе щупы все...

Софт для мультиметра
Имеется мультиметр с RS232 выходом. К нему есть родная софтина - глючная, неудобная и только под XP. Вопрос: есть ли в природе...

Существуют ли такие щупы для мультиметра?
Привет! От щупов моего китайского мультиметра отвалились собственно сами щупы :), купил новые, а на старые припаял крокодилы....


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru