powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Com port работа с несколькими
25 сообщений из 43, страница 1 из 2
Com port работа с несколькими
    #38665875
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в общем и целом умею работать с ком портом. но необходимо организовать перебор указанных ком портов и все их опросить
Код: 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.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
#region comport
        private void SelectCom()  //com port
        {
            try
            {
                NpgsqlConnection conn = new NpgsqlConnection(("Server=" + list[0] + ";Port=" + list[1] + ";User Id=" + list[2] + ";Password=" + list[3] + ";Database=" + list[4] + ";"));  //
                string sql = " SELECT  \"ID_TagName\", \"ID_RealHardWare\",   \"F_ParseFunction\",   \"F_ComQuery\",   \"F_AnswerLenght\",   \"F_AnswerKey\",   \"F_AnswerKeyPosition\",   \"F_ComPort\",   \"F_ComPortIPAdress\",   \"F_ComPortBaudRate\",   \"F_ComPortParity\",   \"F_ComPortDataBits\",   \"F_ComPortStopBit\",   \"F_ComPortFlowControl\",   \"F_ComPortTimeOut\" ,  \"ID_HardWareTag\",   \"F_OPCServerName\",   \"F_IDOPCTag\", \"F_TagReadTime\",   \"Transmit\",   \"F_RealHardWare_ID\" FROM  \"SC_Tag\".\"T_TagName\" as tn,\"SC_Tag\".\"T_HardWareTag\" as hw , \"SC_Tag\".\"T_RealHardWare\" as rh where  rh.\"ID_RealHardWare\" = hw.\"F_RealHardWare_ID\"  and tn.\"F_HardWare_ID\" = hw.\"F_TagName_ID\"   and \"F_ServerName\"  =\'" + Environment.MachineName + "\' and \"F_ComPortIPAdress\" = \'127.0.0.1\' ";
                //   string sql = "  SELECT \"F_name\", \"F_OPCServerName\", \"F_IDOPCTag\", \"F_TagReadTime\",  \"ID_TagName\"   FROM \"SC_Tag\".\"T_TagName\" as tn, \"SC_Tag\".\"T_HardWareTag\" as hw  where tn.\"F_HardWare_ID\" = hw.\"ID_HardWareTag\"    and \"F_ServerName\"  =\'" + Environment.MachineName + "\' ";

                NpgsqlDataAdapter da3 = new NpgsqlDataAdapter(sql, conn);
                //textBox1.Text = sql;
                ds3.Reset();
                da3.Fill(ds3);
                dt3 = ds3.Tables[0];
                dataGridView3.DataSource = dt3;
                if (ds3.Tables[0] != null)
                {

                    min = Convert.ToInt32(dt3.Rows[0][14]);
                    for (int i = 0; i < ds3.Tables[0].Rows.Count; i++)
                    {
                        if (Convert.ToInt32(dt3.Rows[i][14]) < min)
                            min = Convert.ToInt32(dt3.Rows[i][14]);
                    }
                    this.timer4.Interval = min;
                    // Таймер
                    Timer timer = new Timer();
                    // Порт
                    //      SerialPort port = new SerialPort("COM2", 9600, System.IO.Ports.Parity.None, 8, System.IO.Ports.StopBits.One); 
                    for (int xx = 0; xx < ds3.Tables[0].Rows.Count; ++xx)
                    {
                       

                    }
                    // Задаем интервал таймеру
                    timer4.Interval = min;
                    // Подписываемся на тики таймера
                    timer4.Tick += new EventHandler(timer1_Tick);
                    // Стартуем таймер
                    timer4.Start();
                }
        
            }
            catch (Exception msg)
            {
                MessageBox.Show(msg.ToString() + " Select()");
                this.file.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss\t Select()") + msg.ToString());
                this.file.Flush();
                return;
            }
        }
        private void timer4_Tick(object sender, EventArgs e)
        {
            for (int xx = 0; xx < ds3.Tables[0].Rows.Count; ++xx)
            {
                string com = "COM" + dt3.Rows[xx][7];
                send = dt3.Rows[xx][3].ToString() + "\r";
                port = new SerialPort(com, 9600, System.IO.Ports.Parity.None, 8, System.IO.Ports.StopBits.One);
                // Открываем порт
                if (port.IsOpen)
                {
                    // Если порт открыт, значит какой-то косяк, девайс не ответил, здесь обрабатываем

                    // Закрываем
                    port.Close();
                }

                // Открываем
                port.Open();

                port.Write(send);
            }
        }

        int icom = 0;
        // Пришли данные
        void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            try
            {
           

                for (int xx = 0; xx < ds3.Tables[0].Rows.Count; ++xx)
                {
                   
                  

                    System.Threading.Thread.Sleep(100);
                    // Получаем пришедшие данные
                    string indata = port.ReadExisting();

                    // Чето с ними делаем
                    //MessageBox.Show(icom++.ToString() + " " + indata);
                    //  textBox1.Text = indata;
                    //   this.Text = i++.ToString();
                    NpgsqlConnection conn = new NpgsqlConnection(("Server=" + list[0] + ";Port=" + list[1] + ";User Id=" + list[2] + ";Password=" + list[3] + ";Database=" + list[4] + ";"));
                    conn.Open();
                    String Mystr = ("INSERT INTO " + list[5] + "(\"F_TagName_ID\",\"F_Value\",\"F_Date\")  VALUES (" + dt3.Rows[xx][0].ToString() + ",\'" + indata + "\',\'" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "\'   )");
                    //  MessageBox.Show(Mystr);
                    textBox1.Text = Mystr;
                    NpgsqlCommand command = new NpgsqlCommand(Mystr, conn);
                    int rowsaffected;
                    rowsaffected = command.ExecuteNonQuery();
                    conn.Close();

                    /*    if (port.BytesToRead > 0)
                        {
                            byte[] data = new byte[port.BytesToRead];
                            port.Read(data, 0, port.BytesToRead);
                            ASCIIEncoding ascii = new ASCIIEncoding();
                            String decoded = ascii.GetString(data);
                            MessageBox.Show ( decoded + " i: " + i++.ToString());


                        }*/
                    // Закрываем порт
                    if (port.IsOpen)
                    {
                        // Если порт открыт, значит какой-то косяк, девайс не ответил, здесь обрабатываем

                        // Закрываем
                        port.Close();
                    }
                }
            }
            catch (Exception msg)
            {
                  MessageBox.Show(msg.ToString() + "TagIntoNPG()");
                this.file.WriteLine(DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss\t TagIntoNPG()") + msg.ToString());
                this.file.Flush();
                // AddLog(msg.ToString());
                throw;
            }
        }
        #endregion


...
Рейтинг: 0 / 0
Com port работа с несколькими
    #38666157
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
des1roer

Очень смутно у вас написано, и без понимания.
Таймер вот разве можно так использовать - создавать новый в цикле, присваивать обработчик, запускать и выходить из цикла.....

Какую вообще пробему вы решаете таким образом?

Что же касается всей задачи - то чтобы предложить что-то оптимальное надо знать больше про ваши требования.

Например - эта апликация все время запущена, или должна подняться - сделать работу -упасть?

А между обработками портов база данных может измениться?
(Мне кажется что врядли - но всякое бывает...)

И так далее.

Если вы учитесь - попробуйте подумать об обьекте, который может выполнить всю работу с любым ком портом сам. Если у вас будет такой обьект, то вы сможете организовать коллекцию таких обьектов, а не писать замусоренные подключениями-отключениями циклы....
...
Рейтинг: 0 / 0
Com port работа с несколькими
    #38666212
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
des1roer,
соглашусь с коллекцией наблюдателей, принцип хоть отсюда http://stackoverflow.com/questions/15124132/serial-port-polling-and-data-handling, над таймером тоже посмеялся ))
...
Рейтинг: 0 / 0
Com port работа с несколькими
    #38666217
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дело такое - сервис получает список компортов, получает что он должен отправить на эти компорты. затем что получил то пишет в базу. если с обработкой опс серверов проблем не возникло (там в цикле довольно просто оббежать все порты), то тут необходимо создавать это событие eventhandler (вот тут то и главная загвоздка) к одному то подцепиться проблем не возникает, необходимо в цикле перебирать все полученные компорты\что посылать
...
Рейтинг: 0 / 0
Com port работа с несколькими
    #38666220
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
таймер нужен чтобы постоянно опрашивать
...
Рейтинг: 0 / 0
Com port работа с несколькими
    #38666228
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
des1roer,
наблюдатель ( как единица) должен быть самодостаточным, он должен сам знать что ему делать в каких ситуациях
куда писать и что отвечать, это все естественно присваивается ему ( учим его как поступать) при инициализации
...
Рейтинг: 0 / 0
Com port работа с несколькими
    #38666234
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну я ему даю значение ком порта, что посылать пишу, таймер устанавливаю. но не известно будет ли один ком порт, а сколько их будет не знаю
...
Рейтинг: 0 / 0
Com port работа с несколькими
    #38666244
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
des1roer,
тут и напрашивается ответ, если наблюдатели изолированы между собой ( ну может в екшене где пересекаются с аккумулятором)
на каждый порт вешаем наблюдателя: 100 портов 100 наблюдателей
...
Рейтинг: 0 / 0
Com port работа с несколькими
    #38666271
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это крайне плохое решение мне кажется. есть 1 сервис - он может опрашивать все опс сервера что к нему подключены, все железяки по ip, необходимо еще и все com порты просматривать. т.е. как нибудь в цикле перебирать к какому порту цепляться и что посылать
...
Рейтинг: 0 / 0
Com port работа с несколькими
    #38666290
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
des1roerэто крайне плохое решение мне кажется.
Обоснуйте.
У вас будет коллекция обьектов, которые могут быть подключены к своим портам, могут быть не подключены - это все пишется.

Во внешнем коде будет только перебор этих обьектов (любого их количества).
Что вы боитесь растратить? Память?
...
Рейтинг: 0 / 0
Com port работа с несколькими
    #38666310
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вы предлагаете мне создать порядка 20-30 объектов для компортов, при реальном существовании 6-7 и не факт что не будет компорта от какого нить индусского производителя за номером 123
...
Рейтинг: 0 / 0
Com port работа с несколькими
    #38666314
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
D129,
авторвы предлагаете мне создать порядка 20-30 объектов для компортов, при реальном существовании 6-7
гыггы,
Данатос, тут бесполезно спорить, то о чем мы говорим по существу не несет никакого предмета обучения или получения навыков
для ТА, только время, пустая епля в пустую и попытки прикрутит тесты к расползающемуся киселю, вставят в мозг принятия правильных решений.
...
Рейтинг: 0 / 0
Com port работа с несколькими
    #38666317
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мне нужно то поменять в трех местах переменную чтобы другой ком порт указать

Код: c#
1.
2.
3.
4.
5.
6.
7.
send = dt3.Rows[х][3].ToString() + "\r";   \\что посылать
                        com = "COM" + dt3.Rows[х][7];      \\номер компорта
                        port = new SerialPort(com, 9600, System.IO.Ports.Parity.None, 8, System.IO.Ports.StopBits.One);

****
     String Mystr = ("INSERT INTO " + list[5] + "(\"F_TagName_ID\",\"F_Value\",\"F_Date\")  VALUES (" + dt3.Rows[х][0].ToString() + ",\'" + indata + "\',\'" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "\'   )");  \\какое имя указывать
           
...
Рейтинг: 0 / 0
Com port работа с несколькими
    #38666320
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
о чем вы говорите? вы действительно для каждого компорта создаете своего слушателя? а если они (считай все) - виртуальные. и число их может впоследствии расти - и COM200 не будет являться чем то сверхъестественным? как такое написать? ну или может как нибудь динамически слушателей добавлять что бы не врукопашную все забивать7
...
Рейтинг: 0 / 0
Com port работа с несколькими
    #38666327
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
des1roer и не факт что не будет компорта от какого нить индусского производителя за номером 123

Важно другое - когда появится компорт за номером 123?
На каком этапе жизни аппликации?

Вариантов много.
Например - на этапе кодирования. Тогда, чисто технически, можно и захардкодить все. :-)

На этапе, когда сервис запущен? (А компорты разве подключаются динамически? может я чего и не знаю... )
При запуске сервиса?

В любом случае - количество обьектов будет зависеть только от конфигурации, а она, как я понимаю, читается из базы данных? Тогда почему вы считаете что обьектов может "больше чем нужно" ?
...
Рейтинг: 0 / 0
Com port работа с несколькими
    #38666335
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи тут бесполезно спорить...
:-)
Ну а вдруг. Я конечно, мало спрашивал на форумах, больше читал. И тоже иногда у меня возникала мысль "О чем вы говорите!" ....
Ну поломаюсь чуть, для приличия, да и соглашаюсь...
:-)
...
Рейтинг: 0 / 0
Com port работа с несколькими
    #38666337
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, сервис получает данные из базы, динамически. сервис один раз написан - и все, его не трогают, только перезапускают чтобы новые данные подхватил. необходима максимальная гибкость. соответственно, нагрузка будет большая и чем меньше размер программы тем лучше. т.е в прога в цикле должна уметь читать данные с портов. и да. порты могут меняться, может меняться оборудование и могут меняться цифры. вполне реально ситуация com1, com15 и com 45 на одном серваке и com2, com3, com 4 на другом, причем данные должны распарсиватьяс по разному в зависимости от полученных данных с сервера
...
Рейтинг: 0 / 0
Com port работа с несколькими
    #38666338
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
des1roerо чем вы говорите? вы действительно для каждого компорта создаете своего слушателя?
Боюсь вас удивить - но современная мода программирования создает "своего слушателя" практически для каждой кнопки на окне.
В WPF например, паттерн Command....

Я даже начинаю догадываться, что именно вы называете "динамическим" и почему вы считате предложенную вам коллекцию "ручным" способом....

:-/


:-)
...
Рейтинг: 0 / 0
Com port работа с несколькими
    #38666339
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может хоть подскажете где эмулятор ком порта взять?
...
Рейтинг: 0 / 0
Com port работа с несколькими
    #38666341
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может я чего то не понимаю. но вот пример в начале статьи - это один слушатель по вашему? по моему это один слушатель
...
Рейтинг: 0 / 0
Com port работа с несколькими
    #38666344
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
des1roer,
Ну а мы вам о чем?
Расскажите, что вы подумали, раз несогласны.
А мы вам с позиции своего опыта (ну какой уж есть)
развеем ваши опасения по поводу производительности и "размера программы".
:-)
...
Рейтинг: 0 / 0
Com port работа с несколькими
    #38666349
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
des1roerможет я чего то не понимаю. но вот пример в начале статьи - это один слушатель по вашему? по моему это один слушатель
да, это один слушатель.
Он коряво получает настройки, неоптимально инициализируется (каждый раз создается обьект, который вовсе не протух с предыдущего использования), и рискованно вызывается.

Всех достоинств - что он один.
...
Рейтинг: 0 / 0
Com port работа с несколькими
    #38666373
Фотография des1roer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так вот читаю про эмулятор : Возможность создания до 255 виртуальных COM-портов;
т.е. вы мне предлагаете создать 255 слушателей на каждый компорт? даже если оптимизировать мое "творение", то чето много быдлокода получается
...
Рейтинг: 0 / 0
Com port работа с несколькими
    #38666478
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
des1roerтак вот читаю про эмулятор : Возможность создания до 255 виртуальных COM-портов;
т.е. вы мне предлагаете создать 255 слушателей на каждый компорт? даже если оптимизировать мое "творение", то чето много быдлокода получается
А я догадался, что вы не знаете, как использовать такую конструкцию, как класс...
:-)

Я вам сейчас солюшен накидаю - а вы уже доводите до ума.
...
Рейтинг: 0 / 0
Com port работа с несколькими
    #38666576
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO.Ports;
using System.Windows.Forms;
using System.Data;

namespace COMSpectators
{
	class Program
	{

		static Timer mainTimer;
		
		static DataSet ds3;

		static DataTable dt3;
		
		static List<OneCOMSpectator> allListeners;

		static void Main(string[] args)
		{
			InitAll();

			NpgsqlConnection conn = new NpgsqlConnection(("Server=" + list[0] + ";Port=" + list[1] + ";User Id=" + list[2] + ";Password=" + list[3] + ";Database=" + list[4] + ";"));  //
			string sql = " SELECT  \"ID_TagName\", \"ID_RealHardWare\",   \"F_ParseFunction\",   \"F_ComQuery\",   \"F_AnswerLenght\",   \"F_AnswerKey\",   \"F_AnswerKeyPosition\",   \"F_ComPort\",   \"F_ComPortIPAdress\",   \"F_ComPortBaudRate\",   \"F_ComPortParity\",   \"F_ComPortDataBits\",   \"F_ComPortStopBit\",   \"F_ComPortFlowControl\",   \"F_ComPortTimeOut\" ,  \"ID_HardWareTag\",   \"F_OPCServerName\",   \"F_IDOPCTag\", \"F_TagReadTime\",   \"Transmit\",   \"F_RealHardWare_ID\" FROM  \"SC_Tag\".\"T_TagName\" as tn,\"SC_Tag\".\"T_HardWareTag\" as hw , \"SC_Tag\".\"T_RealHardWare\" as rh where  rh.\"ID_RealHardWare\" = hw.\"F_RealHardWare_ID\"  and tn.\"F_HardWare_ID\" = hw.\"F_TagName_ID\"   and \"F_ServerName\"  =\'" + Environment.MachineName + "\' and \"F_ComPortIPAdress\" = \'127.0.0.1\' ";
			//   string sql = "  SELECT \"F_name\", \"F_OPCServerName\", \"F_IDOPCTag\", \"F_TagReadTime\",  \"ID_TagName\"   FROM \"SC_Tag\".\"T_TagName\" as tn, \"SC_Tag\".\"T_HardWareTag\" as hw  where tn.\"F_HardWare_ID\" = hw.\"ID_HardWareTag\"    and \"F_ServerName\"  =\'" + Environment.MachineName + "\' ";

			NpgsqlDataAdapter da3 = new NpgsqlDataAdapter(sql, conn);

			ds3.Reset();
			da3.Fill(ds3);
			dt3 = ds3.Tables[0];
			dataGridView3.DataSource = dt3;


			int mainInterval = 1000;//Convert.ToInt32(dt3.Rows[0][14]);
			mainTimer = new Timer();
			mainTimer.Interval = mainInterval;

			mainTimer.Enabled = true;
			mainTimer.Tick+=new EventHandler(mainTimer_Tick);


		}

		static void  mainTimer_Tick(object sender, EventArgs e)
		{
 			foreach(OneCOMSpectator comListener in allListeners)
			{
				comListener.TransferData();
			}
		}



		private static void InitAll()
		{

			allListeners = new List<OneCOMSpectator>();

			for(int xx = 0; xx < ds3.Tables[0].Rows.Count; ++xx)
			{
				string com = "COM" + dt3.Rows[xx][7];
				string send = dt3.Rows[xx][3].ToString() + "\r";


				allListeners.Add(new OneCOMSpectator(com, 9600, send));
			}


		}
	}


	class OneCOMSpectator
	{
		SerialPort _COM;
		string DataToSend;

		internal OneCOMSpectator(string portNumber, int bodRate, string dataTosend)
		{
			DataToSend = dataTosend;
			_COM = new SerialPort(portNumber, bodRate, System.IO.Ports.Parity.None, 8, System.IO.Ports.StopBits.One);
			_COM.DataReceived += new SerialDataReceivedEventHandler(_COM_DataReceived);
		}

		void _COM_DataReceived(object sender, SerialDataReceivedEventArgs e)
		{
			// Пришли данные
		}


		internal void TransferData()
		{
			if(_COM.IsOpen)
			{
				// Если порт открыт, значит какой-то косяк, девайс не ответил, здесь обрабатываем

				// Закрываем
				_COM.Close();
			}

			// Открываем
			_COM.Open();

			_COM.Write(DataToSend);
			
		}

	
	}

}



Солюшен не обязательно посылать, у вас же сервис, а не винформы ...

Я оставляю на вашей совести доступ в базу - тоже не все айс, но это можно потом.
и получении данных - если вы там пишете в базу, то надо открывать новое соединение - евент ведь вызывается в другом потоке.
Если диалоговое окно - ни в коем случае, тем более сервису не положено окнами кидаться.
...
Рейтинг: 0 / 0
25 сообщений из 43, страница 1 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Com port работа с несколькими
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]