つい2ヶ月ほど前に「getコマンドを送るC言語」で相談させていただいたものです。
その後結論としましては従来のシステム上不可能だったという結論に至りまして新たにXportを追加することで以下の記述でできるようになりました。
コードは、codeタグで囲むようにお願いします。 by softya(ソフト屋)
#include "excalibur.h"
#include "uart.c"
main(void)
{
unsigned char a[50]="getコマンド";
int i,j,u,f;
na_pio_Xreset->np_piodata =1;
na_pio_Xreset2->np_piodata =1;
for(i=0;a[i]!='\0';i++){
putchar_x2(a[i]);
putchar_0(a[i]);
}
putchar_x2((unsigned char)0x0d);
putchar_x2((unsigned char)0x0a);
putchar_0((unsigned char)0x0d);
putchar_0((unsigned char)0x0a);
for(j=0;j<50;j++){
getchar_x(&a[j]);
putchar_0(a[j]);
}
}さて、
その続きで少しわからないことがありましたので相談させていただきます。
無事getコマンドを送るC言語を作成できたので、これを本格的に使えるものとするにあたり、現在電光掲示板を動かしているメインプログラムにこのgetコマンドを送る記述を割り込みで実行できるように記述したいと考えています。
それも「スイッチを押すことで」
スイッチの記述はこちらで作成は行いました。
しかし割り込みの仕方がいまいちわからずどのようにしたらよいかわかっておりません。
そこで相談したいのは
・現在のメインプログラムに割り込みでgetコマンドの記述を加えるとしたらどのように書けばよいか?
です。
スイッチの記述については後ほどでよろしいのでできましたら「割り込み」の仕方を教えていただけたら幸いです。
よろしくお願いします。
とりあえず初回文字列が二回スクロールした後にgetコマンドを送るようにするとこのような記述になりました。
#include "excalibur.h"
#include "uart.c"
#include "codehenkan.c"
#include "flame_0.c"
#include "userlib.c"
#include "uart_lib.c"
#include "timer_n_lib.c"
int main(void)
{
char b[36]="getコマンド";
int i,u,j;
//受信割り込み準備
init_isr_timer0();
init_isr_uart();
na_pio_Xreset->np_piodata =1;
na_pio_Xreset2->np_piodata =1;
rxd_flag = 0;
printf("start\n");
// s=strlen(a);
while(1){ //スクロールの初回文字列受信待ち
// printf("start_loop\n");
nr_delay(1); //待ち必要(原因不明:無いと異常が起こる)
if(rxd_flag == 1){
printf("(%d)初回文字列:%s\n",strlen(rxd_data),rxd_data);
disp_message(rxd_data);
rxd_p = &rxd_data[0];
rxd_flag=0;
break; //下の文字列受信待ちへ
}
}
for(i=0;b[i]!='\0';i++){ //getコマンドを送る記述
putchar_x2(b[i]);
putchar_0(b[i]);
}
putchar_x2((unsigned char)0x0d);
putchar_x2((unsigned char)0x0a);
putchar_0((unsigned char)0x0d);
putchar_0((unsigned char)0x0a);
while(1){ //スクロールの次回文字列受信待ち
// printf("scroll\n");
scroll_message();
if(rxd_flag == 1){
printf("(%d)新文字列:%s\n",strlen(rxd_data),rxd_data);
disp_message(rxd_data);
rxd_p = &rxd_data[0];
rxd_flag=0;
}
}
return(0);
}