Uhm...

Now I try the code below. It works on Microsoft Visual Studio, but not in
mono on Ubuntu.
It compile it, but when I try to run it I get this error:

Unhandled Exception: System.NotImplementedException: The requested feature
is not implemented.
  at System.IO.Ports.SerialPort.set_ReceivedBytesThreshold (Int32 value)
[0x00012] in
/build/buildd/mono-1.2.6+dfsg/mcs/class/System/System.IO.Ports/SerialPort.cs:410
 
  at (wrapper remoting-invoke-with-check)
System.IO.Ports.SerialPort:set_ReceivedBytesThreshold (int)
  at ConsoleApplication1.Program.Main (System.String[] args) [0x0004f] in
/home/paceyiv/programmazione/mono/Microsoft/Microsoft/Main.cs:29 

So I comment the line!
I think don't work the SerialDataReceivedEventHandler. I can write code to
read the byte from serial and the device respond, but the Serial Data
Received Event newer works on mono.

What's wrong?

using System;
using System.Collections.Generic;
//using System.Linq;
using System.Text;
using System.IO;
using System.IO.Ports;
using System.Threading;

namespace ConsoleApplication1
{
    class Program
    {
        static System.IO.Ports.SerialPort rs232;
        
        static string dati;

        static void Main(string[] args)
        {
            // Setup RS-232
                        rs232 = new SerialPort("/dev/ttyUSB0", 9600);
                        // for Win
            //rs232 = new SerialPort("COM3", 9600);
            rs232.BaudRate = 9600;
            rs232.Parity = Parity.None;
            rs232.DataBits = 8;
            rs232.StopBits = StopBits.One;
            rs232.Handshake = Handshake.None;
                        
                        //rs232.ReadTimeout = 2000;
                        //rs232.ReadBufferSize = 1024;
            //rs232.ReceivedBytesThreshold = 1; // This don't work in mono!
            rs232.DataReceived +=
                new SerialDataReceivedEventHandler(rs232_DataReceived); //
This don't work in mono!

            // Open SerialPort
                        try
                        {
                                rs232.Open();
                                // Do I really need this?
                                //rs232.DiscardInBuffer();
                                //rs232.DiscardOutBuffer();
                                
                                // Dealy for my specific device
                                Thread.Sleep(1500);
                        }
                        catch (System.IO.IOException ioe)
                        {
                                Console.Write(ioe.Message);
                                Environment.Exit(1);
                        }

                        // survive to Microsoft :)
                        //CheckForIllegalCrossThreadCalls = false;
                        
                        // Send command to read some date from the device
            rs232.WriteLine("A");

            string m;
            bool continua = true;
            while (continua)
            {
                m = Console.ReadLine();
                if (m=="q")
                {
                    continua = false;
                }
            }

        }

        static void rs232_DataReceived(object sender,
SerialDataReceivedEventArgs e)
        {
            dati += rs232.ReadExisting();
            if (dati.Contains("$"))
            {
                Console.WriteLine(dati);
            }
        }
    }
}


-- 
View this message in context: 
http://www.nabble.com/Mono-C--Serial-Port-problem-tp17241892p17753378.html
Sent from the Mono - Dev mailing list archive at Nabble.com.

_______________________________________________
Mono-devel-list mailing list
Mono-devel-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-devel-list

Reply via email to