У меня есть простая программа последовательного порта, которая должна считывать последовательный порт и отображать набранные символы.Я могу заставить это работать нормально, опрашивая серийный номер, полученный с таймером, но я хотел бы вместо этого использовать событие dataReceived.По какой-то причине событие произойдет один раз, но никогда больше.
SerialPort bsp;
public Form1()
{
InitializeComponent();
bsp = new SerialPort("COM2", 2400, Parity.None, 8, StopBits.One);
bsp.DataReceived +=new SerialDataReceivedEventHandler(whasup);
System.Threading.Thread.Sleep(1000);
bsp.Open();
}
void whasup(object sender, SerialDataReceivedEventArgs e)
{
char[] text = new char[100];
int temp = bsp.BytesToRead;
string j = temp.ToString();
bsp.Read(text, 0, temp);
bsp.Write(text, 0, temp);
}
Я пытался перенести это на ПК, и он прекрасно работает, но на этом устройстве Windows CE он действительно не хочет сотрудничать.Я знаю, что серийный объект все еще открыт, потому что у меня был таймер, запускающий выплевывание текста из устройства Win CE, даже после того, как он перестал отражать свои принимаемые данные.У меня также был выход таймера bsp.BytesToRead, и я мог видеть, как это значение увеличивается, когда я набрал на своем компьютере больше клавиш, которые последовательно общались с устройством Windows CE.Я что-то упустил?