• ベストアンサー

ITRONプログラミングについて

はじめまして。 ITRONでネットワークプログラムの勉強をしています。 質問内容は以下の通りです。 snd_dtq();の関数を使ってタスク間メッセージをしています。 フレーム送信、受信のイベントをそれで通知しています。 ただ、しばらくするとキューエラーで通信できなくなってしまいます。 どうも、キューが枯渇しているようなのですが。。。 snd_dtq();、rcv_dtq();を使う場合、キューの獲得、解放は関数内で 行っていないのでしょうか?実装者が行う必要があるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • jacta
  • ベストアンサー率26% (845/3158)
回答No.1

> ただ、しばらくするとキューエラーで通信できなくなってしまいます。 > どうも、キューが枯渇しているようなのですが。。。 snd_dtqでキューが枯渇した場合は待ち状態に移行するはずですので、エラーにはなりません。別の理由かと思います。 > snd_dtq();、rcv_dtq();を使う場合、キューの獲得、解放は関数内で > 行っていないのでしょうか?実装者が行う必要があるのでしょうか? キューの獲得・解放というのが領域の割付け・解放の意味であれば、割付けはcre_dtq/acre_dtq/CRE_DTQのいずれかで行います。その際、自分で割り付けた領域を指定することもできますし、NULLを指定してカーネルに割付けを任せることもできます。カーネルが割付けた領域の解放はdel_dtqで行います。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • μiTronでの割込み処理について

    μiTron(SH4)でC言語を用いた開発を行います。 タスク間通信ではsnd_mbx,get_mbfなどを使用するのですが、 これらの関数は割り込みハンドラ内でも使えるのでしょうか? よろしくお願いします。

  • 組み込み開発のタスク間通信

    はじめまして。組み込みのタスク間通信について教えて下さい。 OSはITRONを使用しています。 TCP/IPのアプリケーションレイヤで動作するアプリを開発したです。 下位レイヤとのタスク間通信は以下の2つを考えています。 (1)リンクアップ、リンクダウン (2)フレーム送信、フレーム受信 以下のようにタスク起動後にイベント待ち状態にしてイベント発生時に 処理をさせたいです。 このイベントの通知方法で困っています。 (1)はwai_flg()を使って下位レイヤから通知させようとしています。 (1)の通知を受信してリンクアップなら自発でフレームを送信します。 その後の(2)でフレーム受信をどのように待てばよいかわかりません。 フレーム受信はTCP/IPのAPIで受信用APIが用意されています。 (仮:frm_rcv();) wai_flg();と同じようにイベントがあるまで待機状態になるのですが、 どのように埋め込めばいいのか悩んでいます。 void main() {  for(;;){   wai_flg(xxxxxx);   if(/*リンクアップ*/){    func_xxx1();   }   else{/*リンクダウン*/    func_xxx2();   }  } }

  • iTRONプログラミング

    はじめまして。 iTRONでのプログラミングについて教えて下さい。 以下のようなプログラムです。 void FuncA() {  unsigned long *dataP;  ID mbx_id;  Func_rcv_mbx( mbx_id, &dataP); } void Func_rcv_mbx(ID mbx_id, unsigned long data) {  rcv_mbx( mbx_id, (T_MSG **)data); } データのやりとり以外にもやりたいことがあるのでrcv_mbx()をFunc_rcv_mbx()にしています。 ※メールボックスのカウンタとかログとか。 上位はFuncA()のような関数で呼び出しています。 この時にFunc_rcv_mbx()内でもメールボックスのデータを見たい場合はどうすればよいでしょうか? FuncA()内ではメールボックスのデータを見れるのですが。。。 ↓↓のようなコードで見れると思っているのですが、見れませんでした。 void Func_rcv_mbx(ID mbx_id, unsigned long data) {  int *localdata;  rcv_mbx( mbx_id, (T_MSG **)data);  localdata = (int*)data; }

  • 独自アプリのAPI公開方法について

    Visutal C++ 2008(MFC)を用いてソフトウェアを開発しています。 現在開発しているソフトウェアは、ネットワーク通信系のものであり、 EXE側で通信機能を実装し、DLLをプラグインという形でロードしています。 そこで、DLL側でもEXE側に実装した通信系の関数(SendやRecvなど)を 呼び出したい(EXEからAPIを公開?)と考えているのですが、 どう実装したらいいのか分かりません。 今のところは、API公開用のDLLを用意し、EXEとDLLから両方ともにロード をさせようかと思っていますが、他に良い方法は無いでしょうか? 宜しくお願いします。

  • OpenCVでのプログラミングについての質問です

    Visual Studio2013でOpenCVを使えるようにし、現在USBカメラの映像をキャプチャする簡単なプログラムを作っています。 今は、 #include <opencv2/opencv.hpp> #include <opencv2/opencv_lib.hpp> #include <ctype.h> void Mouse( int event, int x, int y, int flags ,void *param); //マウス宣言 int main( int argc, char **argv) { // カメラからのビデオキャプチャを初期化する CvCapture *videoCapture = cvCreateCameraCapture( 1 ); cvSetCaptureProperty(videoCapture,CV_CAP_PROP_FRAME_WIDTH,1920); cvSetCaptureProperty(videoCapture,CV_CAP_PROP_FRAME_HEIGHT,1080); if( videoCapture == NULL ) { return -1; } // ウィンドウを作成する char windowName[] = "キャプチャ"; cvNamedWindow( windowName, CV_WINDOW_NORMAL|CV_WINDOW_FREERATIO ); // 何かキーが押下されるまで、ループをくり返す while( cvWaitKey( 1 ) == -1 ) { // カメラから1フレーム取得する IplImage *image = cvQueryFrame( videoCapture ); // ウィンドウに画像を表示する cvShowImage( windowName, image ); cvSetMouseCallback(windowName, Mouse); //マウスのコールバック関数登録 } // ビデオキャプチャを解放する cvReleaseCapture( &videoCapture ); // ウィンドウを破棄する cvDestroyWindow( windowName ); return 0; } void Mouse( int event, int x, int y, int flags ,void *param = NULL) // コールバック関数 { switch(event) { case CV_EVENT_LBUTTONDOWN: std::cout << x << "," << y << "\n"; //マウスの左クリックがされたときにその座標を読み込む break; default: break; } } このように記述し、新しいウィンドウにキャプチャしている映像を取得し、そのウィンドウ上でクリックされた座標を取得する、というプログラムになっています。 これを、 「クリックされた周辺一定範囲の映像を拡大して表示する」 というものにしたいのですが、プログラミング経験が浅く、調べながらいろいろ試行錯誤しても上手く動くプログラムを書くことができません。 どなたかアドバイスをいただけないでしょうか?

  • モードレスダイアログ ボックスの破棄について

    はじめまして。 VC++6.0でアプリケーションを開発していますが、モードレスダイアログの破棄の事で困っています。 まずアプリケーションの状況から説明します。 メインフレームを親として、複数の子ダイアログボックスが大量にある状態です。 1つのプロセスで使用している画面数、コントロール数とも膨大な為、子ダイアログを使うたびに作成→破棄(メモリの解放)を繰り返すようにしたいと思っています。 Create 関数で作成したダイアログ ボックスを破棄するには、CWnd::DestroyWindow 関数を使えばいいようですが、この関数を使用すればメモリの解放もされているのでしょうか? タスクマネージャを見る限り、メモリの使用量は減っていないようなのですが・・・ NSDNなどで色々調べたのですが、CWnd::PostNcDestroy関数も合わせて使用し、delete this としないとメモリの解放は出来ないのかどうかが、いまいち良く分かりません。 残り時間がほとんどなく、本当に困っています。 どなたかよろしくお願いいたします。

  • Pythonでキーが押されたことを判定したい

    Python初心者です。Pythonでキー入力の値を変数keyとして取り出したいのですが、上手くいきません。 グローバル関数がわかっていないのかと思いますが直し方がわかりません。 最終的に37行目のprint(key)でkeyの値を取り出したいのですがどうすればよいですか。 # -*- coding: utf8 -*- import tkinter as tk import winsound root = tk.Tk() frame = tk.Canvas(root, width=800, height=600) pimg = tk.PhotoImage(file="wall.png") frame.place(x=0, y=0) frame.create_image(400, 300, image=pimg) imgA = tk.PhotoImage(file = 'pressed_A.png') imgB = tk.PhotoImage(file = 'Pressed_B.png') def keyA(event): global key key="A" frame.place(x=0, y=0) frame.create_image(320, 220, image=imgA, tag="illust") root.update() winsound.PlaySound("pressed_A.wav", winsound.SND_FILENAME) def keyB(event): global key key="B" frame.place(x=0, y=0) frame.create_image(320, 220, image=imgB, tag="illust") root.update() winsound.PlaySound("pressed_B.wav", winsound.SND_FILENAME) frame.bind("a", keyA) frame.focus_set() frame.pack() frame.bind("b", keyB) frame.focus_set() frame.pack() print(key) root.mainloop()

  • C言語の標準関数のエラー

    現在ソケット通信でデータを送受信するプログラムを作っています。 通信してデータのやり取りする部分はできたので、関数のエラーチェック、異常が発生したときの処理を追加しているところです。 異常時の処理は、エラーの通知・メモリの解放など行っている感じです。 今エラーの判断を行うのに関数の戻り値を利用しているのですが、ふと疑問が浮かんできました。 それは、関数がエラーを返すときはどういうときなのか、つまり、エラーが発生する原因はなんなのか?ということです。 関数について解説しているHPを見ても、戻り値は載っていてもなぜその戻り値が返ってくるのか、といった原因まで解説してくれているところがありません。 標準関数について、エラーが返る原因を解説しているHPはあるでしょうか。もし知っている方がいれば教えていただけると幸いです。 HPでなくても、他に調べる方法があればご教授お願いします。 特に通信用の関数について知りたいというわけでなく、エラーについて興味があるといった感じです。 ・・・といいつつも、ソケット関数について教えていただければ例外処理も考え易いかなと思っています^^;

  • winsockを使った通信での同時接続について

    WSAAsyncSelectを使ってソケットにくるネットワークイベントを受け取って処理しようとしています。 サーバーに複数のクライアントが接続してくる通信プログラムを作っています。 クライアントがバラバラのタイミングで接続してくると問題なく通信が行えるのですが 同時に接続してくると通信がうまく行えなくなってしまいます。 サーバー側で接続してくるクライアント分だけソケット作る必要がありますか? lまた、listen関数を使って無いのですが使う必要はありますか?

  • ITRON

    最近ITRONという言葉を耳にします. PICによるプログラミングの経験は あります.そこで.このITRONって 何なんでしょうか?リアルタイムOSの意味も 教えてください. また,ITRONによる簡単なデジタル入出力制御 回路例などの参考サイトURLがありましたら アドバイスをお願いします.