예제 #1
0
파일: Program.cs 프로젝트: bollylu/Stepper
        public static void Test()
        {
            foreach (string SerialPortItem in SerialCom.GetSerialPorts())
            {
                Console.WriteLine(SerialPortItem);
            }

            Stepper CurrentStepper = new Stepper("COM4");

            MoveInfoCollection MySequence = new MoveInfoCollection();

            MySequence.AddItem(new MoveInfo(EDirection.Clockwise, 20, 1));
            //MySequence.AddItem(new MoveInfo(EDirection.Clockwise, 20, 0.8));
            //MySequence.AddItem(new MoveInfo(EDirection.Clockwise, 20, 0.6));
            //MySequence.AddItem(new MoveInfo(EDirection.Clockwise, 20, 1));
            //MySequence.AddItem(new MoveInfo(EDirection.Clockwise, 4500, 0.2));
            //MySequence.AddItem(new MoveInfo(EDirection.Clockwise, 100, 0.5));
            //MySequence.AddItem(new MoveInfo(EDirection.CounterClockwise, 4690, 0));

            for (int i = 1; i <= 10; i++)
            {
                TChrono NewChrono = new TChrono();
                NewChrono.Start();
                Task.Run(() => CurrentStepper.Execute(MySequence)).Wait();
                Console.WriteLine($"Execution time = {NewChrono.ElapsedTime.TotalMilliseconds}");
            }
            //Task.Run(() => CurrentStepper.Execute(new MoveInfo(EDirection.Clockwise, 5, 100))).Wait();
        }
예제 #2
0
        private string log;                                              //The string used to store the log data on

        public Form1()
        {
            InitializeComponent();

            //Sets up dummy data
            SetupData();

            //Sets up list view
            SetupListView(listView1);

            //Populate the Combobox with SerialPorts on the System
            comboBox_available_serialPorts.Items.AddRange(SerialPort.GetPortNames());

            //Setup serialCom
            serialCom = new SerialCom(serialPort1);

            // Displaying System Information

            string SystemInformation;//Used for Storing System Information

            //Log the system information
            SystemInformation = " Machine Name = " + System.Environment.MachineName;                                                                // Get the Machine Name
            SystemInformation = SystemInformation + Environment.NewLine + " OS Version = " + System.Environment.OSVersion;                          // Get the OS version
            SystemInformation = SystemInformation + Environment.NewLine + " Processor Cores = " + Environment.ProcessorCount + Environment.NewLine; // Get the Number of Processors on the System

            TextBox_System_Log.AppendText(SystemInformation);                                                                                       //Display into the Log Text Box
        }
예제 #3
0
        /// <summary>
        /// Send a SIP (Slave Interrupt Packet) to a master computer.
        /// </summary>
        /// <param name="deviceId">Id of the slave device who answered.</param>
        /// <param name="InterrupCode">The code of the interruption (0 to 255).</param>
        /// <returns>The error check data.</returns>
        public int SendInterruption(int deviceId, int InterrupCode)
        {
            byte[] hex;
            byte[] pkt = new byte[14];
            int    ecd;

            //Packet Type
            pkt[0] = (byte)'!';
            pkt[1] = (byte)'!';
            //ECA
            hex    = Encoding.Default.GetBytes(((int)ErrorCheckType).ToString("X1"));
            pkt[2] = hex[0];
            //Device ID
            hex    = Encoding.Default.GetBytes(deviceId.ToString("X3"));
            pkt[3] = hex[0];
            pkt[4] = hex[1];
            pkt[5] = hex[2];
            //Interruption Code
            hex    = Encoding.Default.GetBytes(InterrupCode.ToString("X2"));
            pkt[6] = hex[0];
            pkt[7] = hex[1];
            //CRC
            ecd     = ErrorCheck(pkt, 8, ErrorCheckType);
            hex     = Encoding.Default.GetBytes(ecd.ToString("X4"));
            pkt[8]  = hex[0];
            pkt[9]  = hex[1];
            pkt[10] = hex[2];
            pkt[11] = hex[3];
            //Packet End
            pkt[12] = (byte)'\r';
            pkt[13] = (byte)'\n';

            SerialCom.Write(pkt, 0, 14);
            return(ecd);
        }
예제 #4
0
        private void DataAvailable(object sender, WaveInEventArgs e)
        {
            var peak = MaxFloat(e.Buffer, e.BytesRecorded) * 100F;
            var val  = peak <= 2F? 38F : 255F * Math.Log10(peak) / 2F;

            SerialCom.Enqueue(Message.SetBright((int)val));
            Thread.Sleep(33);
        }
예제 #5
0
 /// <summary>
 /// The non-default constructor
 /// </summary>
 /// <param name="sc">The serial port source</param>
 /// <param name="regions">The rectangle array region</param>
 public ScreencapThread(SerialCom sc, Rectangle[] regions)
 {
     this.serial    = sc;
     this.regions   = regions;
     this.size      = Screen.PrimaryScreen.Bounds.Size;
     t              = new Thread(new ThreadStart(capScreen));
     t.Name         = "Screen capture and analysation thread";
     t.IsBackground = true;
 }
예제 #6
0
        public LogManager()
        {
            InitializeComponent();
            this.Dock = DockStyle.Fill;

            scom = new SerialCom();
            scom.DataReceivedEvent += serialPort_DataReceived;
            recvQueue = new ConcurrentQueue <byte[]>();
        }
예제 #7
0
        private void serialConnectBtn_Click(object sender, EventArgs e)
        {
            if (ConnectionsManager.Inst.IsSomeConnectionInitiated())
            {
                MsgBox.WarningMsg("Multiple Connections Are Not Allowed",
                                  "Some other connection type (TCP or UDP) is already open. Close it and try again");
                return;
            }

            // no port was selected
            if (serialComCmBx.Text == "")
            {
                MsgBox.WarningMsg("Serial Connection Failed", "No port was selected");
                serialConnectionStateLbl.Text      = "Failed";
                serialConnectionStateLbl.BackColor = Color.Tomato;
                return;
            }

            SaveSerialSettings();
            string detailedPort = serialComCmBx.Text;
            string portName     = SerialCom.DetailedToSimplefiedPortName(detailedPort);

            // selected port is not a serial port (doesn't contain 'COM')
            if (portName == null)
            {
                MsgBox.WarningMsg("Serial Connection Failed", "Invalid port");
                serialConnectionStateLbl.Text      = "Failed";
                serialConnectionStateLbl.BackColor = Color.Tomato;
                return;
            }


            int      baud     = int.Parse(serialBaudCmBx.SelectedItem.ToString());
            StopBits stopBits = SerialCom.StringToStopBits(serialStopBitsCmBx.SelectedItem.ToString());
            int      dataBits = (int)serialDataBitsTxt.Value;
            Parity   parity   = SerialCom.StringToParity(serialParityCmBx.SelectedItem.ToString());

            ConnectionsManager.Inst.InitSerial();
            if (ConnectionsManager.Inst.Serial.Connect(portName, baud, parity, dataBits, stopBits))
            {
                serialPortLbl.Text                 = portName;
                serialConnectionStateLbl.Text      = "Connected";
                serialConnectionStateLbl.BackColor = Color.LimeGreen;
                serialIndicatorLbl.BackColor       = Color.LimeGreen;
                serialDisconnectBtn.Enabled        = true;
                serialConnectBtn.Enabled           = false;
                ConnectionsManager.Inst.Serial.Subscribe(OnIncomingBytes);
                // disable pkg parsing on serial
                pkgParseChkBx.Checked = false;
                pkgParseChkBx.Enabled = false;
            }
            else
            {
                serialConnectionStateLbl.Text      = "Failed";
                serialConnectionStateLbl.BackColor = Color.Tomato;
            }
        }
예제 #8
0
 internal static void StartStopComThread()
 {
     serial?.Dispose();
     if (!string.IsNullOrWhiteSpace(Settings.Model.SerialComId))
     {
         serial = new SerialCom();
         SerialCom.Enqueue(Message.SetLedNumber(Settings.Model.TotalLeds));
         SerialCom.Enqueue(Message.GetPatterns());
     }
 }
예제 #9
0
        internal static void Stop()
        {
            if (instance == null)
            {
                return;
            }

            instance.capture.StopRecording();
            instance = null;
            SerialCom.Enqueue(Message.SetBright(Settings.Model.Brightness));
        }
예제 #10
0
파일: Transicao.cs 프로젝트: KennethLui/TG2
        // Funcao responsavel por adicionar a TAG no dicionario da sala para qual a TAG fez a transicao
        public static void transicaoADD(string EPC, int sala_atual, Tags_TG tag)
        {
            switch (sala_atual)
            {
            case 0:

                GlobalData.DictAmbienteExterno.Add(EPC, tag);
                tag.Ambiente = 0;
                break;

            case 1:

                GlobalData.DictSalaPrincipal.Add(EPC, tag);
                tag.Ambiente = 1;
                if (GlobalData.DictSalaPrincipal.Count > 2 && GlobalData.AcionamtSalaPrincipal == 0)
                {
                    Console.WriteLine("\n*Acionamento do ventilador na Sala Principal*\n");
                    GlobalData.AcionamtSalaPrincipal = 1;
                    SerialCom.Controle_Ar("Sala Principal");
                }
                break;

            case 2:

                GlobalData.DictSalaReunioes.Add(EPC, tag);
                tag.Ambiente = 2;
                if (GlobalData.DictSalaReunioes.Count > 2 && GlobalData.AcionamtSalaReunioes == 0)
                {
                    Console.WriteLine("\n*Acionamento do ventilador na Sala de Reunioes*\n");
                    GlobalData.AcionamtSalaReunioes = 1;
                    SerialCom.Controle_Ar("Sala Reuniões");
                }
                break;

            case 3:

                GlobalData.DictCorredorBaias.Add(EPC, tag);
                tag.Ambiente = 3;
                if (GlobalData.DictCorredorBaias.Count > 2 && GlobalData.AcionamtCorredorBaias == 0)
                {
                    Console.WriteLine("\n*Acionamento do ventilador no Corredor de Baias*\n");
                    GlobalData.AcionamtCorredorBaias = 1;
                    SerialCom.Controle_Ar("Corredor de Baias");
                }
                break;

            default:
                Console.Write("Caso não identificado");
                break;
            }
        }
예제 #11
0
        /// <summary>
        /// Send a MRP packet to a slave computer.
        /// </summary>
        /// <param name="deviceId">Id of the requested device in slave.</param>
        /// <param name="message">The message in bytes to be send.</param>
        /// <param name="msgLength">The message length.</param>
        /// <returns>The error check data.</returns>
        public int SendRequest(int deviceId, byte[] message, int msgLength)
        {
            byte[] hex;
            int    ecd;

            if (message.Length < msgLength)
            {
                msgLength = message.Length; //saturating
            }

            //mounting the packet
            byte[] pkt = new byte[msgLength + 15];
            //Packet Type
            pkt[0] = (byte)'!';
            pkt[1] = (byte)'?';
            //ECA

            hex = Encoding.Default.GetBytes(((int)ErrorCheckType).ToString("X1"));
            //hex = Encoding.Default.GetBytes(String.Format("{0:X1}", ErrorCheckType));
            pkt[2] = hex[0];
            //device Id
            hex    = Encoding.Default.GetBytes(deviceId.ToString("X3"));
            pkt[3] = hex[0];
            pkt[4] = hex[1];
            pkt[5] = hex[2];
            //Message length
            hex    = Encoding.Default.GetBytes(msgLength.ToString("X3"));
            pkt[6] = hex[0];
            pkt[7] = hex[1];
            pkt[8] = hex[2];
            //Message (payload)
            for (int i = 0; i < msgLength; i++)
            {
                pkt[9 + i] = message[i];
            }
            //Error checking
            ecd = ErrorCheck(pkt, msgLength + 9, ErrorCheckType);
            hex = Encoding.Default.GetBytes(ecd.ToString("X4"));
            pkt[9 + msgLength]     = hex[0];
            pkt[9 + msgLength + 1] = hex[1];
            pkt[9 + msgLength + 2] = hex[2];
            pkt[9 + msgLength + 3] = hex[3];
            //Packet End
            pkt[9 + msgLength + 4] = (byte)'\r';
            pkt[9 + msgLength + 5] = (byte)'\n';

            //Sending request
            SerialCom.Write(pkt, 0, 15 + msgLength);
            return(ecd);
        }
예제 #12
0
        private void btnCashChargOpenPort_Click(object sender, RoutedEventArgs e)
        {
            var msg = "";

            com = new SerialCom(cmbCashChargePorts.Text);
            if (com.Open(out msg) == false)
            {
                Core.Log.In(msg);
                return;
            }
            StatusCode.Init();
            wrapPanel.IsEnabled = true;
            wp1.IsEnabled       = true;
            constrant           = new Constrant(com);
        }
예제 #13
0
        /// <summary>
        /// Update serialComCmBx items, and keep existing
        /// ports at their current index in the list
        /// </summary>
        private void UpdateSerialPorts()
        {
            var t = Task.Run(delegate
            {
                // the following function is a blocking one, therefore must be
                // called in a seperate thread so GUI won't freeze
                connectedSerialPorts = SerialCom.GetConnectedPortsDetailedStrings();
            });

            if (connectedSerialPorts == null)
            {
                return;
            }

            // create a clone of serialComCmBx.Items to allow
            // modifying serialComCmBx.Items while iterating
            // over its elements
            List <string> portsListClone = new List <string>();

            foreach (string port in serialComCmBx.Items)
            {
                portsListClone.Add(port);
            }

            //remove disconnected ports from combobox
            foreach (string port in portsListClone)
            {
                if (!connectedSerialPorts.Contains(port))
                {
                    serialComCmBx.Items.Remove(port);
                }
            }

            // add new connected ports the combobox
            foreach (string port in connectedSerialPorts)
            {
                if (!serialComCmBx.Items.Contains(port))
                {
                    serialComCmBx.Items.Add(port);
                }
            }

            if (serialComCmBx.Items.Count > 0)
            {
                serialComCmBx.SelectedIndex = 0;
            }
        }
예제 #14
0
파일: Transicao.cs 프로젝트: KennethLui/TG2
        // Funcao responsavel por fazer a remocao da TAG no dicionario da sala anterior a transicao
        public static void transicaoRemove(string EPC, int sala_anterior)
        {
            switch (sala_anterior)
            {
            case 0:

                GlobalData.DictAmbienteExterno.Remove(EPC);
                break;

            case 1:

                GlobalData.DictSalaPrincipal.Remove(EPC);
                if (GlobalData.DictSalaPrincipal.Count <= 2 && GlobalData.AcionamtSalaPrincipal == 1)
                {
                    Console.WriteLine("\n*Desacionamento do ventilador na Sala Principal*\n");
                    GlobalData.AcionamtSalaPrincipal = 0;
                    SerialCom.Controle_Ar("Sala Principal");
                }
                break;

            case 2:

                GlobalData.DictSalaReunioes.Remove(EPC);
                if (GlobalData.DictSalaReunioes.Count <= 2 && GlobalData.AcionamtSalaReunioes == 1)
                {
                    Console.WriteLine("\n*Desacionamento do ventilador na Sala de Reunioes*\n");
                    GlobalData.AcionamtSalaReunioes = 0;
                    SerialCom.Controle_Ar("Sala Reuniões");
                }
                break;

            case 3:

                GlobalData.DictCorredorBaias.Remove(EPC);
                if (GlobalData.DictCorredorBaias.Count <= 2 && GlobalData.AcionamtCorredorBaias == 1)
                {
                    Console.WriteLine("\n*Desacionamento do ventilador no Corredor de Baias*\n");
                    GlobalData.AcionamtCorredorBaias = 0;
                    SerialCom.Controle_Ar("Corredor de Baias");
                }
                break;

            default:
                Console.Write("Caso não identificado");
                break;
            }
        }
 private void ToggleSerialPort()
 {
     try
     {
         if (SerialCom.IsPortOpen)
         {
             SerialCom.Close();
         }
         else
         {
             SerialCom.Open();
         }
         ToggleButtonText = SerialCom.IsPortOpen ? "Close" : "Open";
         OnPropertyChanged(nameof(SerialCom));
     }
     catch (System.Exception)
     {
     }
 }
예제 #16
0
        private void ToolStripButtonConnect_Click(object sender, EventArgs e)
        {
            try
            {
                if (!_isConnected)
                {
                    var portName = comboBoxPortName.Text;
                    if (comboBoxPortName.SelectedIndex >= 0)
                    {
                        portName = _portNames[comboBoxPortName.SelectedIndex];
                    }
                    var baudRate = int.Parse(comboBoxBaudRate.Text);

                    _serialCom = new SerialCom(portName, baudRate, _appConfig.SetDtrOnConnect);
                    _serialCom.OnDataReceived += SerialCom_OnDataReceived;
                    _serialCom.OnException    += SerialCom_OnException;
                    _serialCom.Open();

                    _isConnected       = true;
                    buttonConnect.Text = "Disconnect";
                    this.Text          = string.Format("{0} [{1} - {2}]", Application.ProductName, portName, baudRate);
                    UpdateStatusLabel("Connected at Baudrate " + baudRate);
                    comboBoxPortName.Enabled = false;
                    comboBoxBaudRate.Enabled = false;
                }
                else
                {
                    _isConnected             = false;
                    buttonConnect.Text       = "Connect";
                    comboBoxPortName.Enabled = true;
                    comboBoxBaudRate.Enabled = true;
                    UpdateStatusLabel("Disconnected");
                    this.Text = Application.ProductName;
                    _serialCom.Close();
                }
                UpdateSerialPortDescription();
            }
            catch (Exception ex)
            {
                PopupException(ex.Message);
            }
        }
예제 #17
0
 public MainForm()
 {
     InitializeComponent();
     com         = new SerialCom();
     com.Visible = false;
     _switch     = false;
     packetnum   = 1;
     this.Controls.Add(com);
     pictureBox2.SendToBack();
     new Thread(image).Start();
     seconddatapanel.Visible = false;
     textBox36.Text          = "7.0";
     textBox37.Text          = "0.0";
     textBox38.Text          = "0.0";
     textBox39.Text          = "5.0";
     textBox40.Text          = "0.0";
     textBox41.Text          = "0.1";
     tbMotorVel.Text         = "0";
     label5.Text             = "请按照打开文件、下载程序、开始程序进行操作!";
 }
예제 #18
0
        private void btnOpen_Click(object sender, EventArgs e)
        {
            if (btnOpen.Text == "Close")
            {
                _spr.Close();
                btnOpen.Text = "Open";
            }
            else
            {
                string portName = cbPortName.Text;
                int    baudRate = cbBaudRate.Text.ToInt32(9600);
                Parity parity   = (Parity)Enum.Parse(typeof(Parity), cbParity.Text);

                int      dataBits = cbDataBits.Text.ToInt32(8);
                StopBits stopBits = (StopBits)Enum.Parse(typeof(StopBits), cbStopBits.Text);
                //StopBits stopBits = (StopBits)1;
                _spr = new SerialCom(portName, baudRate, parity, dataBits, stopBits);
                _spr.Open();
                _spr.DataReceived += new SerialCom.SerialPorterDataReceiveEventArgs(_spr_DataReceived);
                //_spr.sp.DataReceived += new SerialDataReceivedEventHandler(spr_DataReceived);
                btnOpen.Text = "Close";
            }
        }
예제 #19
0
        private void Form1_Load(object sender, EventArgs e)
        {
            txtCmd.Text = "68 01 fe 68 00 06 49 bf d7 0d";


            foreach (string port in SerialCom.GetPortNames())
            {
                cbPortName.Items.Add(port);
            }
            string[] bauds = new string[] { "9600", "19200", "115200" };
            foreach (string baud in bauds)
            {
                cbBaudRate.Items.Add(baud);
            }
            foreach (string name in Enum.GetNames(typeof(Parity)))
            {
                cbParity.Items.Add(name);
            }
            for (int i = 5; i < 9; i++)
            {
                cbDataBits.Items.Add(i);
            }
            foreach (string name in Enum.GetNames(typeof(StopBits)))
            {
                cbStopBits.Items.Add(name);
            }

            cbBaudRate.SelectedIndex = 0;
            cbDataBits.SelectedIndex = 3;
            cbParity.SelectedIndex   = 0;
            if (cbPortName.Items.Count > 0)
            {
                cbPortName.SelectedIndex = 0;
            }
            cbStopBits.SelectedIndex = 1;
        }
예제 #20
0
 public Turret(string port, int baud)
 {
     _com           = new SerialCom(port, baud);
     TurretPosition = new int[2];
 }
 public SerialControlViewModel()
 {
     SerialCom = new SerialCom();
     ToggleSerialPortCommand = new DelegateCommand(ToggleSerialPort);
 }
예제 #22
0
        internal static void Run(object obj)
        {
            Thread.CurrentThread.Name = "DXGI Capture";
            var token = (CancellationToken)obj;

            int i, ix;

            byte[] points, color;
            HardwareScreenCapture <T> instance = null;

            while (!token.IsCancellationRequested)
            {
                try
                {
                    if (instance == null)
                    {
                        instance = new HardwareScreenCapture <T>();
                        instance.Initialize();
                        SerialCom.Enqueue(Message.StreamStart());
                        //first call or two returns an empty (black) screen
                        //consume here during init
                        instance.CaptureFrameGPU();
                    }

                    if (instance.CaptureFrameGPU())
                    {
#if DOT_TIMER
                        var sw = new Stopwatch();
                        sw.Start();
#endif
                        instance.TransferFrameCPU();
#if PARALLEL
                        Parallel.ForEach(instance.ledPoints, x => x.Calculate());
#else
                        for (i = 0; i < instance.ledPoints.Length; i++)
                        {
                            instance.ledPoints[i].Calculate();
                        }
#endif
                        points = new byte[instance.ledPoints.Length * 3];

                        for (i = 0, ix = 0; i < instance.ledPoints.Length; ++i, ix = i * 3)
                        {
                            color          = instance.ledPoints[i].mean;
                            points[ix]     = color[0];
                            points[ix + 1] = color[1];
                            points[ix + 2] = color[2];
                        }

                        if (token.IsCancellationRequested)
                        {
                            break;
                        }

                        SerialCom.Enqueue(new Message.Command()
                        {
                            Type = Message.Type.Stream,
                            Raw  = points
                        });
#if DOT_TIMER
                        Console.WriteLine(sw.Elapsed.TotalMilliseconds);
#endif
                        instance.Render(points);
                    }
                }
                catch (Exception)
                {
                    instance?.Dispose();
                    instance = null;
                }
            }
            instance?.Dispose();
        }
예제 #23
0
 /// <summary>
 /// Non-default constructor
 /// </summary>
 /// <param name="comPort">The COM port (e.g. COM3)</param>
 /// <param name="baudrate">The Baudrate (e.g. 9600)</param>
 public RgbControl(string comPort, int baudrate)
 {
     serial = new SerialCom(comPort, baudrate);
 }
예제 #24
0
 public void ExposureMode(double value)
 {
     SerialCom.SetCamParm(CommandList.sem, value);
 }
예제 #25
0
 public void Direction(DirectionMode direction)
 {
     SerialCom.SetCamParm(CommandList.scd, ( double )(direction == DirectionMode.Forward ? 0:1));
 }
예제 #26
0
 public EleTagControllerImpl()
 {
     serialCom         = new SerialComImpl();
     addressMappingDAL = new AddressMappingDALImpl();
     serialCom.setSerialDataReceivedHandler(DataReceivedHandler);
 }
예제 #27
0
 public void LineRate(double value)
 {
     SerialCom.SetCamParm(CommandList.ssf, value);
 }
예제 #28
0
 public void TDIMode(TdiMode mode)
 {
     SerialCom.SetCamParm(CommandList.tdi, mode == TdiMode.Tdi ? 1 : 0);
 }
예제 #29
0
 public CommonCmd(SerialCom com)
 {
     m_SerialCom = com;
 }
예제 #30
0
 /// <summary>
 /// Non-Default constructor
 /// </summary>
 /// <param name="sc">The serial port source</param>
 public Screencap(SerialCom sc)
 {
     this.serial = sc;
 }