Добавление SMS-сообщения gsm в текстовое поле или список (WinForm) - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть эти коды для получения смс с моего модема GSM.Это работает, но я хочу, чтобы сообщения просматривались в списке или текстовом поле.Может кто-нибудь помочь мне, как это сделать?

        public void Read()
       {            
        gsmPort.WriteLine("AT+CMGF=1"); // Set mode to Text(1) or PDU(0)
        Thread.Sleep(1000); // Give a second to write
        gsmPort.WriteLine("AT+CPMS=\"SM\""); // Set storage to SIM(SM)
        Thread.Sleep(1000);
        gsmPort.WriteLine("AT+CMGL=\"ALL\""); // What category to read ALL, REC READ, or REC UNREAD
        Thread.Sleep(1000);
        gsmPort.Write("\r");
        Thread.Sleep(1000);

        string response = gsmPort.ReadExisting();

        if (response.EndsWith("\r\nOK\r\n"))
        {
            Console.WriteLine(response);
            // add more code here to manipulate reponse string.
        }
        else
        {
            // add more code here to handle error.
            Console.WriteLine(response);
        }

Так я общаюсь с моим модемом, используя эти коды.Это работает, но только на консоли.Я хочу добавить это к моей winform

class GSMsms
{
    private SerialPort gsmPort = null;
    private bool IsDeviceFound { get; set; } = false;
    public bool IsConnected { get; set; } = false;

    public GSMsms()
    {
        gsmPort = new SerialPort();
    }

    public GSMcom[] List()
    {
        List<GSMcom> gsmCom = new List<GSMcom>();
        ConnectionOptions options = new ConnectionOptions();
        options.Impersonation = ImpersonationLevel.Impersonate;
        options.EnablePrivileges = true;
        string connString = $@"\\{Environment.MachineName}\root\cimv2";
        ManagementScope scope = new ManagementScope(connString, options);
        scope.Connect();

        ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_POTSModem");
        ManagementObjectSearcher search = new ManagementObjectSearcher(scope, query);
        ManagementObjectCollection collection = search.Get();

        foreach (ManagementObject obj in collection)
        {
            string portName = obj["AttachedTo"].ToString();
            string portDescription = obj["Description"].ToString();

            if (portName != "")
            {
                GSMcom com = new GSMcom();
                com.Name = portName;
                com.Description = portDescription;
                gsmCom.Add(com);
            }
        }


        return gsmCom.ToArray();
    }
...