Exemple #1
0
        public static void TransmitData(SerialPortHandler handler, string filePath)
        {
            // Setting the reference to serial port object
            port = handler._mainSerialPort;
            // Pretty important to make reset the sequence number!
            seq = 1;
            // Read the data to be transmitted and store it in an array
            transmitData = FileIO.Read("inputData.txt");

            // Open the port if not done already.
            if (!port.IsOpen)
            {
                port.Open();
            }

            try
            {
                // First wait for NAK or C symbol from receiver to begin transmission
                Sym protocolMode = WaitForAny(10);

                if (protocolMode == Sym.NAK || protocolMode == Sym.C)
                {
                    Console.WriteLine("Received " + protocolMode.ToString());
                    // Reset the data byte offset and start transmission
                    offset = 0;
                    Console.WriteLine("transmitData length: " + transmitData.Length);
                    while (offset < transmitData.Length)
                    {
                        Console.WriteLine("offset: " + offset);

                        TransmitPacket(protocolMode);
                    }

                    PortWriteByte((byte)Sym.EOT);
                    Console.WriteLine("EOT transmitted.");
                    if (WaitForSym(Sym.ACK, 10))
                    {
                        Console.WriteLine("Succesfully sent " + (offset / 128 + 1) + " packets!");
                    }
                }
            }
            // If there is timeout in the WaitForSym - print out the message
            catch (TimeoutException e)
            {
                Console.Error.WriteLine(e.Message);
            }
        }
Exemple #2
0
        static void Main(string[] args)
        {
            //byte[] data = { 0x07, 0x5B, 0xCD, 0x15 };
            ////byte[] data = { 0x01, 0x02 };
            //ShiftRegister register = new ShiftRegister(data, true, 0x1021);
            //ushort output = register.CalcCRC_16();
            //Console.WriteLine("Crc output: " + output);
            //byte[] decodeData = { 0x07, 0x5B, 0xCD, 0x15, (byte)(output >> 8), (byte)output };
            //register = new ShiftRegister(decodeData, false, 0x1021);
            //ushort decode = register.CalcCRC_16();
            //Console.WriteLine("Decoded: " + decode);

            int protocolMode = 0;

            string[] transmissionModes = { "Send Data", "Receive Data" };
            int      transmissionMode  = SmartConsoleInput.ListSelectIndex(" <  > Select transmission mode: ", transmissionModes,
                                                                           ">< Make a selection, then press enter ><");

            if (transmissionMode == 1)
            {
                string[] protocolModes = { "Xmodem", "CRC-Xmodem" };
                protocolMode = SmartConsoleInput.ListSelectIndex(" <  > Select protocol mode: ", protocolModes,
                                                                 ">< Make a selection, then press enter ><");
            }

            SerialPortHandler portHandler = SerialPortHandler.InitializeSerialPort();

            if (transmissionMode == 0)
            {
                XModem.TransmitData(portHandler, "inputData.txt");
            }
            else if (transmissionMode == 1)
            {
                XModem.ReceiveData(portHandler, "outputData.txt", protocolMode);
            }
            else
            {
                throw new Exception("Bad transmission mode selected.");
            }
        }
Exemple #3
0
        static void Main(string[] args)
        {
            SerialPortHandler portHandler = SerialPortHandler.InitializeSerialPort();

            serialPort           = portHandler._mainSerialPort;
            serialPort.DtrEnable = true;
            serialPort.RtsEnable = true;
            serialPort.Open();
            serialPort.DataReceived += DataReceivedHandler;

            Console.Clear();

            Console.SetCursorPosition(lastSendPos, 1);
            Console.BackgroundColor = ConsoleColor.Cyan;
            Console.ForegroundColor = ConsoleColor.Black;
            Console.WriteLine("Data sent:");

            Console.SetCursorPosition(lastSendPos, 3);
            Console.BackgroundColor = ConsoleColor.Green;
            Console.ForegroundColor = ConsoleColor.White;
            Console.WriteLine("Data received:");

            DataSender();
        }
Exemple #4
0
        public static void ReceiveData(SerialPortHandler handler, string filePath, int mode)
        {
            Sym protocolMode;

            if (mode == 0)
            {
                protocolMode = Sym.NAK;
            }
            else if (mode == 1)
            {
                protocolMode = Sym.C;
            }
            else
            {
                throw new Exception("Bad protocol mode!");
            }
            // Setting the reference to serial port object
            port = handler._mainSerialPort;
            // Pretty important to make reset the sequence number!
            seq = 1;
            // Read the data to be transmitted and store it in an array
            receivedData = new Queue <byte>();

            // Open the port if not done already.
            if (!port.IsOpen)
            {
                port.Open();
            }

            //Transmission initialization
            try
            {
                InitReceiver(10, 10, protocolMode);

                //Start receiving packets
                Sym status;
                do
                {
                    status = ReceivePacket(10, protocolMode);
                    if (status != Sym.EOT)
                    {
                        Console.WriteLine("Sent symbol: " + status.ToString());
                        PortWriteByte((byte)status);
                    }
                } while (status != Sym.EOT);

                PortWriteByte((byte)Sym.ACK);

                //Save data to file
                using (StreamWriter file = new StreamWriter(filePath))
                {
                    char buffer;
                    do
                    {
                        buffer = (char)receivedData.Dequeue();
                        if (buffer != 0)
                        {
                            file.Write(buffer);
                        }
                    } while (receivedData.Count > 0);
                }
            }
            catch (TimeoutException e)
            {
                Console.WriteLine(e.Message);
                return;
            }
        }