Как отправить данные из ASP.Net C # в Arduino через последовательный порт и распечатать их на ЖК-дисплее?

У меня есть страница ASP.Net для операций входа / регистрации. Что я пытаюсь сделать, так это показать имя пользователя на ЖК-дисплее, когда пользователь входит в систему. Я использую оборудование, которое я использую, это ЖК-экран клавиатуры, а не просто ЖК-дисплей, если это важно. И прекрасный Arduino UNO.

Сторона C #

Я попытался сохранить имя пользователя в массиве символов и отправить его в arduino один за другим, но Serial.Write () выдает ошибку, если я не передаю ему строку. Тогда я хотел отправить сразу все имя, но Serial.Read (), похоже, читает по одному.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Security;
using System.IO.Ports;
using System.Text;
using System.ComponentModel;
using System.Windows;

namespace EComm
{
    public partial class Login : System.Web.UI.Page
    {
        SerialPort sp;
        protected void Page_Load(object sender, EventArgs e)
        {
            sp = new SerialPort();
            sp.PortName = "COM13";
            sp.BaudRate = 9600;
            txtPass.TextMode = TextBoxMode.Password;
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            DBDataContext db = new DBDataContext();
            db.Connection.Open();
            var users = from allusers in db.Users select allusers;
            foreach (User _user in users)
            {
                if (txtUser.Text == _user.UserName.Trim())
                    if (txtPass.Text == _user.UserPassword.Trim())
                    {
                        Session["User"] = _user.UserName;
                        String outgoing = Session["User"].ToString();
                        for (int i = 0; i < outgoing.Length; i++)
                        {
                            sp.Open();
                            sp.Write(outgoing[i].ToString());
                            sp.Close();
                        }
                        Response.Redirect("Default.aspx");
                    }
            }
        }

Сторона Arduino

#include <LiquidCrystal.h>
char usrName[10];
char incomingChar;
byte index=0;

LiquidCrystal lcd(4,5,6,7,8,9);
int baud = 9600; 
int x=0;
int y=0;

void setup()
{
 lcd.begin(16,2);
 lcd.setCursor(x,y); 
 Serial.begin(baud);
}

void loop()
{
    while(Serial.available()>0){
    if(index<10){
      y=1;
      incomingChar=Serial.read();
      usrName[index]=incomingChar;
      lcd.setCursor(x,y);
      lcd.print(usrName[index]);
      index++;
      x++;
    }
}
}

Оба кода не выдают ошибок или предупреждений. Когда я загружаю программу в Arduino и запускаю страницу входа в систему, я успешно перенаправляюсь на указанную страницу, но на ЖК-дисплее ничего не отображается.

Собственно это то, что я вижу после входа на сайт. Понятия не имею, почему там белые клетки, они просто появляются, когда я подключаю плату. Но когда я загружаю пример программы для защиты клавиатуры, эти ячейки просто становятся нормальными.

введите описание изображения здесь

введите описание изображения здесь


person ardatosun    schedule 08.07.2015    source источник
comment
Можете ли вы вообще что-нибудь распечатать на своем ЖК-дисплее? Вам следует попытаться лучше изолировать проблему. Пожалуйста, убедитесь, что outgoing[i].ToString() не пуст и что он действительно принимается на стороне Arduino. Если это так, у вас проблема с тем, как вы взаимодействуете с ЖК-дисплеем, или проблема с оборудованием.   -  person Stian Sandve    schedule 09.07.2015
comment
Да, я могу без проблем печатать на ЖК-дисплее. Я отлаживал сторону C #. Когда я проверяю outgoing, я вижу, что имя пользователя введено в текстовое поле, но когда я проверяю outgoing.[i].ToString(), я все еще вижу полное имя пользователя. Разве это не должно быть его первой буквой?   -  person ardatosun    schedule 09.07.2015
comment
Если вы имели в виду, получил ли я какой-либо вывод на ЖК-дисплее после входа в систему, да, у меня есть 3 странных символа в первых 3 столбцах в первой строке, что все еще странно, потому что я установил значение строки на 1, чтобы напечатать его во 2-й строке.   -  person ardatosun    schedule 09.07.2015


Ответы (1)


Я обнаружил, что порядок номеров контактов имеет значение. Строку LiquidCrystal lcd(4,5,6,7,8,9); изменили на LiquidCrystal lcd(8,9,4,5,6,7);. Теперь я вижу желаемый результат, и при запуске тоже нет белых ячеек.

person ardatosun    schedule 09.07.2015
comment
О да! Это очень характерно для дисплеев 1402. Некоторые даже позволяют управлять подсветкой с помощью ШИМ (думаю, на выводе 10/11) или просто включать / выключать (вывод 13). Зависит от того, как сделана доска - проследите по следам, чтобы увидеть, куда они идут. - person Graeme Wicksted; 07.10.2016
comment
@GraemeWicksted, оглядываясь назад, этот вопрос кажется таким глупым, лол. Тем не менее, спасибо за комментарий. - person ardatosun; 07.11.2016