ben sadece do i Char sonra bir dize kömürü göndermeyi deneyin eğer SerialPort & CCS dize Haberleşme
SerialPort.WriteLine("A6");
ama CCS içinde
, öyle değil ReadLine veya ReadExisting ile hiç çalışmayın! RXBUFF pragma'ya her girdiğimizde bu, diziyi doldurana kadar diziye alınan char'i ekledik (dizi boyutu 2'ye rastgele tanımladım, yani 2 ile başa çıkacağız demektir) -Char uzunlukta dizeler) ve sonunda Char sonra kömürü göndererek dize gönderin:#pragma vector = USCI_A1_VECTOR
__interrupt void USCI_A1_ISR(void)
if(__even_in_range(UCA1IV,18) == 0x02){ // Vector 2 - RXIFG
if(counter==0)
{
Data[0]=UCA1RXBUF;
counter++;
}
else
{
Data[1]=UCA1RXBUF;
counter=0;
UCA1TXBUF=Data[0];
while(!(UCA1IFG & UCTXIFG)); // until UCTXBUF1 is empty
UCA1TXBUF=Data[1];
}
}
C#:
listBox2.Items.Add(SerialPort.ReadExisting());
i almak gibi non-sense metin,: ?? A ??? bazen: ???? vs .. ama birlikte i "A6" gönderir Gönder düğmesine basın ilk kez
listBox2.Items.Add(SerialPort.ReadLine());
i hiçbir şey elde, sadece ReadExisting davranışı gibi, lutfen olmayan fikir edinmek ikinci kez. i (dizide ve şartlar olmaksızın) en kolay şekilde dize göndermeyi deneyin bile arada
, ben böyle demek: ben de liste kutusunda tutarsız öğeleri almak#pragma vector = USCI_A1_VECTOR
__interrupt void USCI_A1_ISR(void)
UCA1TXBUF='A';
while(!(UCA1IFG & UCTXIFG)); // until UCTXBUF1 is empty
UCA1TXBUF='6';
.
Ancak, ben yaparsam:
#pragma vector = USCI_A1_VECTOR
__interrupt void USCI_A1_ISR(void)
UCA1TXBUF=UCA1RXBUF;
i liste kutusunda "A6" olsun ve herşey (taleb ve ReadExisting ile) iyi çalışır! kimse bunun neden olduğunu bana söyleyebilir mi?
http://electronics.stackexchange.com/questions/71810/uart-is-garbled-when-running-at-more-than-9600-bps –
Baud Oranının ve diğer özelliklerin eşleştirildiğini onayladınız mı? yukarı? –
Evet! özellikler eşleşmediyse, sanırım son deneme işe yaramazdı, ama işe yarıyor. benimle aynı fikirde değil misin? –