I'm a linux noob wanting to migrate this piece of C# code:
using System;
using System.IO;
using System.IO.Ports;
public class LoadCell
{
private static string configFile = Directory.GetCurrentDirectory() + "\\LoadCell.config";
private static string errorLog = Directory.GetCurrentDirectory() + "\\LoadCell.log";
private static string puerto = "COM1";
public static void Main (string[] args)
{
if(File.Exists(configFile))
{
TextReader tr = new StreamReader(configFile);
puerto = tr.ReadToEnd();
tr.Close();
}
if(args.Length > 0)
{
switch(args[0])
{
case "-ayuda":
Console.WriteLine("\r\nEste programa esta diseñado para capturar el peso medido actualmente por la báscula a través de un puerto (por defecto es el COM1). Recuerde que el indicador debe estar configurado para:");
Console.WriteLine("\r\npuerto: " + puerto);
Console.WriteLine("baud rate: 4800");
Console.WriteLine("parity: none");
Console.WriteLine("data bits: 8");
Console.WriteLine("stop bit: one");
Console.WriteLine("\r\nEn caso de ocurrir un error recuerde revisar el log de errores (" + errorLog + ").");
Console.WriteLine("\r\nLos posibles argumentos son:");
Console.WriteLine("\r\n-ayuda: este ya lo sabes usar...");
Console.WriteLine("\r\n-puerto <nombre>: cambia el puerto al nuevo valor creando un archivo de configuración (" + configFile + ")");
Console.WriteLine("\r\n-default: elimina el archivo de configuración para retomar la configuración inicial");
break;
case "-default":
File.Delete(configFile);
Console.WriteLine("\r\narchivo de configuración eliminado");
break;
case "-puerto":
if(args.Length > 1)
{
puerto = args[1];
TextWriter tw = new StreamWriter(configFile);
tw.Write(puerto);
tw.Close();
Console.WriteLine("\r\npuerto cambiado a " + puerto);
}
else
{
Console.WriteLine("\r\nse esperaba un nombre de puerto");
}
break;
}
}
else
{
new LoadCell();
}
}
private static void log(string text)
{
Console.Write("ha ocurrido un error...");
TextWriter sw = File.AppendText(errorLog);
sw.WriteLine("[" + System.DateTime.Now.ToString() + "] " + text);
sw.Close();
}
public LoadCell()
{
try
{
SerialPort port = new SerialPort(puerto, 4800, Parity.None, 8, StopBits.One);
port.NewLine = "\r";
port.ReadTimeout = 10000;
port.Open();
port.WriteLine("RA:");
port.DiscardInBuffer();
Console.Write(port.ReadLine());
}
catch(Exception e)
{
log("Error: " + e.ToString());
}
}
}
to something else, any suggestion will be appreciated!
btw, what do you think about doing that directly within PHP?, because the result is used in a PHP file like:
function peso() {
$resultado = utf8_encode(exec('loadcell'));
if(preg_match('/^RA:\s*([0-9]{1,8})$/i', $resultado, $m) > 0) {
json_exit(array('peso' => $m[1]));
} else {
json_exit(array('error' => $resultado));
}
}
thanks!