Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.10.2015, 14:50   #1
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию Конфликт юзиньгов C#, Windows Forms

Я использую в программе тайминг и для него нужно выбрать либо
Код:
using System.Windows.Forms;
, либо
Код:
using System.Threading;
Если убрать Windows.Forms и использовать вариант 2, то ошибки - ведь у меня Windows Forms приложение. Теперь наоборот. 2 приложение, которое я беру за основу - TCP-клиент, тоже работающий пример в WF. Ему важно Threading.

Но ведь таймер ругается, когда Threading используешь совместно с Windows.Forms. Сначала я забил, но сейчас мне надо соединить проект с таймером и проект с TCP. Вопрос - как это сделать? Ни одно из приложений пока на компромисс идти не хочет!

Последний раз редактировалось Krasi; 26.10.2015 в 16:14.
Krasi вне форума Ответить с цитированием
Старый 26.10.2015, 15:03   #2
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

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

Юзинги можно совсем не иметь, и работать бует.
come-on вне форума Ответить с цитированием
Старый 26.10.2015, 15:07   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну не пиши в using. Пиши полный путь в имени переменки: System.Threading.Чет-там
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.10.2015, 15:59   #4
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

А судя по этой ошибке, чего мне не хватает в подключении?

Код:
Error	6	The type or namespace name 'ManualResetEvent' could not be found 
(are you missing a using directive or an assembly reference?)	
C:\Users\engineer\Desktop\Step1_binFFT_v2\Workable_TCP\NewClient\NewClient\Form1.cs	45	17	
NewClient
По-моему, нет шансов, это уже класс пошел в Threading. Как это по-другому сделать - до меня не доходит. Или я что-то не понимаю?

Последний раз редактировалось Stilet; 26.10.2015 в 16:37.
Krasi вне форума Ответить с цитированием
Старый 26.10.2015, 16:38   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
А судя по этой ошибке, чего мне не хватает в подключении?
У тебя в проге есть ссыль на ManualResetEvent, но это имя нигде не описано.
Цитата:
нет шансов
Ну да. Без кода в студии какие уж там шансы? )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.10.2015, 17:18   #6
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

Я не знаю, как лучше показать, но пока такая версия. То есть это то приложение, очень обрезанное, в которое нужно добавить TCP. Пойдет так, или как лучше код представить?
Код:
using System;
...

using System.Threading.Tasks;
using System.Windows.Forms;
using ZedGraph;
using System.Collections;
using System.Runtime.InteropServices;
using FFTWSharp;
//using System.Threading;


namespace Bin_creator
{
    //using System.Threading.Timer;
    public partial class FormM : Form
    {
        int icount = 8;
        int chnum = 0;
        int nSymbol = 0;
        Timer tmr;
        int itmr;
        string A;

        List<string> B = new List<string>();
        ...

        ZedGraphControl zedGraph = new ZedGraphControl();           //Для бинарных данных
       ...
        
        string sdif = ""; int s1_prev = 0;

...

        public FormM()
        {
            InitializeComponent();
            tmr = new Timer();
            tmr.Interval = 500;
            tmr.Tick += new EventHandler(tmr_Tick);
            button1.Text = "Start";

            zedGraph.Location = new System.Drawing.Point(20, 10); 
          ...

            myPane = zedGraph.GraphPane;
...

            list.Clear(); myPane.CurveList.Clear();
            myPane.Title.Text = "Бинарные данные";
            myPane.XAxis.Title.Text = "n, выборки"; myPane.YAxis.Title.Text = "bin_data, единицы";
            ...
            list1.Clear(); myPane1.CurveList.Clear();
            myPane1.Title.Text = "Полученное созвездие 8-DPSK модулированного сигнала";
            myPane1.XAxis.Title.Text = "I, В"; myPane1.YAxis.Title.Text = "Q, В";
            myCurve1 = zedGraph1.GraphPane.AddCurve("IQ_data", list1, Color.Blue, SymbolType.Diamond);
            ...

        
           

            ...

        private void Form1_Load(object sender, EventArgs e)
        {
            
        }

        void tmr_Tick(object sender, EventArgs e)
        {...
            
           ...
            

            chnum = 0;
            this.Controls["richTextBox2"].Text = B[itmr - 1];
            string B1 = "";
            
            if (B[itmr - 1] != null) { B1 = B[itmr - 1]; Bdig.Add(asbin(B1));} else { }
            this.Controls["richTextBox3"].Text = Bdig[itmr - 1];


          ...
                Qpart.Add(Qparti);
            }

            if (itmr - 1 < nSymbol)
            {
                int n = 1024; float[] fin = new float[n * 2]; float[] fout = fin;

                for (int n4 = 0; n4 <= 3; n4++) //Какой символ вытаскиваем из 4
                {
                    //600 значений Ipart или Qpart = 4 символа по 150 значений. Выделяем по очереди один символ из 4
                    string Ipart4Sym = Ipart[itmr - 1]; string Qpart4Sym = Qpart[itmr - 1];
                    string Ipart1Sym = ""; string Qpart1Sym = "";
                    //
                    for (int i = 0 + n4 * Ipart4Sym.Length / 4; i < (Ipart4Sym.Length / 4 + n4 * Ipart4Sym.Length / 4); i++)
                    { Ipart1Sym += Ipart4Sym[i]; Qpart1Sym += Qpart4Sym[i]; }

                    fin = OFDM_spec(Ipart1Sym, Qpart1Sym, n, fin); // 1024 I поднесущих + 1024 Q поднесущих, 
                    // в I 150 Ipart, в Q 150 Qpart

                    fout = ifft(fin, n);                                        //Получаем массив выходных значений


                         //to shift complex values to -  
                        int i1 = 0; float[] finShift = new float[n * 2];
                        for (int i = 0; i < fin.Length; i++)
                        {
                            if (i >= fin.Length / 2) i1 = i - fin.Length / 2;
                            else i1 = i + fin.Length / 2;
                          ...
                        }

                          
                    
                }
                 


            }
            ...

                itmr = itmr + 1;
                if (itmr >= B.Count + 1)
                {
                    itmr = 1; sdif = ""; s1_prev = 0;
                    Bdig.Clear(); difcod.Clear(); Ipart.Clear(); Qpart.Clear();
                }
            }
    ...
        private void button1_Click(object sender, EventArgs e)
        {
            tmr.Enabled = !tmr.Enabled;
            button1.Text = tmr.Enabled ? "Стоп" : "Старт";

...
            pin = fftwf.malloc(n * 8); pout = fftwf.malloc(n * 8);
            Marshal.Copy(fin, 0, pin, n * 2);                          // Подаем массив fin на вход ОБПФ pin

            IntPtr fplan1 = fftwf.dft_1d(n, pin, pout, fftw_direction.Backward, fftw_flags.Estimate);
            fftwf.execute(fplan1);                                     // ОБПФ

            Marshal.Copy(pout, fout, 0, n * 2);                        // Получаем массив fout с входа ОБПФ pout

            return fout;
        }   
    }
}
Krasi вне форума Ответить с цитированием
Старый 26.10.2015, 17:20   #7
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

И где вы видите ManualResetEvent в этом коде?

Ну и да, находится он в неймспейсе System.Threading https://msdn.microsoft.com/en-us/lib...vs.110%29.aspx
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 26.10.2015, 17:22   #8
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

А вот клиент TCP, который я хочу встроить в этот проект. Консольным было, получилось его вставить в WF, это тоже урезанный код, потому что там куча символов в тексте.
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;

namespace NewClient
{
                
    public partial class Form1 : Form
    {
           // State object for receiving data from remote device.
    public class StateObject
    {
       // public System.Windows.Forms.RichTextBox richTextBox1;
        // Client socket.
        public Socket workSocket = null;
        // Size of receive buffer.
        public const int BufferSize = 256;
        // Receive buffer.
        public byte[] buffer = new byte[BufferSize];
        // Received data string.
        public StringBuilder sb = new StringBuilder();
    }

    public class AsynchronousClient
    {
        Form1 myClass1 = new Form1();
        // The port number for the remote device.
        const int port = 11000;
        public string richi = "First time initialization";
        // ManualResetEvent instances signal completion.
        static ManualResetEvent connectDone =
            new ManualResetEvent(false);
        static ManualResetEvent sendDone =
            new ManualResetEvent(false);
        static ManualResetEvent receiveDone =
            new ManualResetEvent(false);

        // The response from the remote device.
        static String response = String.Empty;

        public void StartClient()
        {
            // Connect to a remote device.
            try
            {
                // Establish the remote endpoint for the socket.
                // The name of the 
                // remote device is "host.contoso.com".
                IPHostEntry ipHostInfo = Dns.Resolve("localhost");
                IPAddress ipAddress = ipHostInfo.AddressList[0];
                IPEndPoint remoteEP = new IPEndPoint(ipAddress, port);

                // Create a TCP/IP socket.
                Socket client = new Socket(AddressFamily.InterNetwork,
                    SocketType.Stream, ProtocolType.Tcp);

                // Connect to the remote endpoint.
                client.BeginConnect(remoteEP,
                    new AsyncCallback(ConnectCallback), client);
                connectDone.WaitOne();
                string Ipart = "582721278981293123129381923<EOF>";
                // Send test data to the remote device.
                Send(client, Ipart);
                sendDone.WaitOne();
...
            }
        }

        static void ReceiveCallback(IAsyncResult ar)
        {
            try
            {
                // Retrieve the state object and the client socket 
                // from the asynchronous state object.
                StateObject state = (StateObject)ar.AsyncState;
                Socket client = state.workSocket;

                // Read data from the remote device.
                int bytesRead = client.EndReceive(ar);

                if (bytesRead > 0)
                {
                    // There might be more data, so store the data received so far.
                    state.sb.Append(Encoding.ASCII.GetString(state.buffer, 0, bytesRead));

                    // Get the rest of the data.
                    client.BeginReceive(state.buffer, 0, StateObject.BufferSize, 0,
                        new AsyncCallback(ReceiveCallback), state);
                }
                else
                {
                    // All the data has arrived; put it in response.
                    if (state.sb.Length > 1)
                    {
                        response = state.sb.ToString();
                    }
                    // Signal that all bytes have been received.
                    receiveDone.Set();
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }
        }

        static void Send(Socket client, String data)
        {
            // Convert the string data to byte data using ASCII encoding.
            byte[] byteData = Encoding.ASCII.GetBytes(data);

            // Begin sending the data to the remote device.
            client.BeginSend(byteData, 0, byteData.Length, 0,
                new AsyncCallback(SendCallback), client);
        }

        static void SendCallback(IAsyncResult ar)
        {
           ...

    }
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            AsynchronousClient myClass = new AsynchronousClient();
            this.richTextBox1.Text = myClass.richi;
            myClass.StartClient();
            
        }
    }

}
Krasi вне форума Ответить с цитированием
Старый 26.10.2015, 17:24   #9
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

Alex11223, ManualReset Event нужен именно для TCP
Krasi вне форума Ответить с цитированием
Старый 26.10.2015, 17:27   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Так. У меня две реплики:
1) пиши полный путь к именам:
Код:
 static System.Threading.ManualResetEvent connectDone =
            new ManualResetEvent(false);
А using убери

2) Я не понял, а что за ошибка, о которой ты в топе глаголишь? Чем это там таймер ругается?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Конфликт библиотек Кудаив Помощь студентам 2 27.08.2012 10:39
Конфликт кодов Trimbl Microsoft Office Excel 6 23.06.2012 02:28
Конфликт IOCP C# и C++. hatecows C# (си шарп) 0 19.04.2012 16:12
конфликт jquery johny_03 JavaScript, Ajax 1 18.11.2011 00:09
Конфликт IP Fellics{новичок} Компьютерное железо 3 30.12.2009 19:15