[Mono-dev] Mono C# Serial Port problem
PaceyIV
paceynet at gmail.com
Tue Jun 10 07:42:05 EDT 2008
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.
More information about the Mono-devel-list
mailing list