el código:¿por qué se niega el acceso al puerto com?
static void Main(string[] args)
{
Console.WriteLine("Memory mapped file reader started");
using (var file = MemoryMappedFile.OpenExisting("AIDA64_SensorValues"))
{
using (var readerz = file.CreateViewAccessor(0, 0))
{
var bytes = new byte[567];
var encoding = Encoding.ASCII;
readerz.ReadArray<byte>(0, bytes, 0, bytes.Length);
File.WriteAllText("C:\\myFile.txt", encoding.GetString(bytes));
var readerSettings = new XmlReaderSettings { ConformanceLevel = ConformanceLevel.Fragment };
using (var reader = XmlReader.Create("C:\\myFile.txt", readerSettings))
{
while (reader.Read())
{
using (var fragmentReader = reader.ReadSubtree())
{
if (fragmentReader.Read())
{
reader.ReadToFollowing("value");
SerialPort port = new SerialPort("COM2", 9600, Parity.None, 8, StopBits.One);
port.Open();
port.Write(reader.ReadElementContentAsString() + ",");
}
}
}
}
}
}
Console.WriteLine("Press any key to exit ...");
Console.ReadLine();
}
se lee la memoria compartida, escribe que la memoria compartida para presentar, a continuación, el mismo archivo se abre con lector de XML y se divide xml ya que tiene múltiples raíces, a continuación, obtiene el valor de un nodo en cada nuevo xml dividido y envía por serie. funciona en el primer xml dividido y su nodo se envía a través de una serie, luego se detiene con un acceso denegado al mensaje de puerto en el intento de escribir el segundo nodo en la serie.
tengo otra aplicación que hice con el mismo código de serie y funciona bien (me cansé y luego la cerré) ... así que es extraño.
tal vez no está cerrando algunas referencias correctamente y abrió el acceso significa que se le negará más acceso desde la misma aplicación/hilo. –