Конференция "Начинающим" » Помогите перевести код [D7, XP]
 
  • ss_75 © (17.11.17 18:19) [0]
    Добрый день. Есть код на С# (http://www.cyberforum.ru/kip-sensors/thread771426-page3.html). Нужно перевести на делфи:

    public sealed class Init: MainInit
       {
           public static SerialPort mySerialPort = new SerialPort();
           public static string seriya = "";
           public static string nomer = "";
           public static string karta = "";
           public static string karta16;

           public void PortProperties()
           {

            if (mySerialPort.IsOpen == false)
              {
                mySerialPort.BaudRate = 9600;
                mySerialPort.Parity = Parity.None;
                mySerialPort.StopBits = StopBits.One;
                mySerialPort.DataBits = 8;
                mySerialPort.Handshake = Handshake.None;
                mySerialPort.ReadTimeout = 200;
                mySerialPort.PortName = "COM10";
                try
                {
                    mySerialPort.Open();
                }
                catch (System.IO.IOException)
                {
                    //throw new Exception("Устройство не подключено");
                }
                Thread t = new Thread(Opros);
                t.Start();
                t.IsBackground = true;
                mySerialPort.DataReceived += new SerialDataReceivedEventHandler(mySerialPort_DataReceived);
                OnPick += OnPicked;

              }
           }

           static void Opros()
           {
               var data_for_controller1 = new byte[5] { 242, 255, 1, 2, 3 };
               var data_for_controller = new byte[7] { 242, 255, 3, 1, 0, 26, 24 };

               if (mySerialPort.IsOpen)
                   mySerialPort.Write(data_for_controller, 0, 7);

               while (mySerialPort.IsOpen)
               {
                   try
                   {
                       mySerialPort.Write(data_for_controller1, 0, 5);
                   }
                   catch(System.IO.IOException)
                   {

                   }
               }

           }

           public static void mySerialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
           {

               byte[] buffer = new byte[mySerialPort.BytesToRead];
               mySerialPort.Read(buffer, 0, buffer.Length);

               for (int i = 2; i < buffer.Length; i = i + 8)
               {
                   if (buffer[i] == 8)
                   {
                       int nomk = (buffer[i + 5] >> 1) + (buffer[i + 6] & 1) * 128;
                       int ss = (buffer[i + 6] >> 1) + (buffer[i + 7] & 1) * 128;
                       nomk = nomk + ss * 256;
                       int serk = (buffer[i + 7] >> 1) + (buffer[i + 8] & 1) * 128;

                       karta = serk.ToString() + nomk.ToString();

                       karta16 = buffer[i + 5].ToString() + buffer[i + 6].ToString() + buffer[i + 7].ToString() + buffer[i + 8].ToString();
                       seriya = serk.ToString();
                       nomer = nomk.ToString();
                       Thread.Sleep(200);
                       OnRaiseCustomEvent(new EventArgs());

                   }
               }
               if (mySerialPort.IsOpen)
               {
                   mySerialPort.DiscardOutBuffer();
               }

           }

           public static event EventHandler<EventArgs> OnPick;

            public static void OnRaiseCustomEvent(EventArgs e)
           {

               EventHandler<EventArgs> handler = OnPick;
           

               if (handler != null)
               {
                   handler(null, e);
               }

           
           }
         

           void OnPicked(object sender, EventArgs e)
           {
               for (int i = 0; i < 10; i++)
               {
                 SendKeys.SendWait("{BS}");  
               }
               SendKeys.SendWait(seriya + " " + nomer);

           }

       }
       }
  • kilkennycat © (18.11.17 00:15) [1]
    буквально не перевести. работа с комп-портом в дотнете отличается. принципы работы с ком-портом в делфи описаны чуть более чем дофига и доступны бесплатно в гугле вообще и здесь в поиске в частности.
 
Конференция "Начинающим" » Помогите перевести код [D7, XP]
Есть новые Нет новых   [118609   +52][b:0][p:0]