f-tomohiko の回答履歴

全70件中61~70件表示
  • シリアル通信のデータ欠けについて

    シリアル通信のデータ欠けについて教えてください。 WindowsXP上でシリアル通信「115200bps、8、None(ODD、EVEN)、1」の設定で、1ms毎に12バイトの送受信を行っているのですが、1分ほど受信すると、データ欠けが発生します。 受信プログラムはこの問題が発覚してから、受信したデータを変数にバッファリングし、保存ボタンを押してから、ログファイルへ保存するシンプルなプログラムを作成し、確認しています。 「切り分けた内容」 1、57600bpsでも発生する 2、VB6、VisualStudio2008 C#で作成したツール及びフリーソフト(SerialDebugger)でも、データ欠けが発生する 3、RS232Cラインモニタ(キャロちゃん)で確認すると、データ欠けは発生していないので、受信側の問題と判断しています。 4、送信間隔を50msと遅くしても発生する 5、RS232C及び、USB変換したものどちらでも発生する 6、9600bpsでは、発生しない(同じデータ数での判断) 7、ケーブル長は1mほど ちなみに通信時間に余裕が無い為、チェックサムやハンドシェイクなどの機能は、入れられません。 一般的にWindowsでシリアルの高速受信を行うと、データ欠けが発生するのが当たり前なのでしょうか?

  • シリアル通信のデータ欠けについて

    シリアル通信のデータ欠けについて教えてください。 WindowsXP上でシリアル通信「115200bps、8、None(ODD、EVEN)、1」の設定で、1ms毎に12バイトの送受信を行っているのですが、1分ほど受信すると、データ欠けが発生します。 受信プログラムはこの問題が発覚してから、受信したデータを変数にバッファリングし、保存ボタンを押してから、ログファイルへ保存するシンプルなプログラムを作成し、確認しています。 「切り分けた内容」 1、57600bpsでも発生する 2、VB6、VisualStudio2008 C#で作成したツール及びフリーソフト(SerialDebugger)でも、データ欠けが発生する 3、RS232Cラインモニタ(キャロちゃん)で確認すると、データ欠けは発生していないので、受信側の問題と判断しています。 4、送信間隔を50msと遅くしても発生する 5、RS232C及び、USB変換したものどちらでも発生する 6、9600bpsでは、発生しない(同じデータ数での判断) 7、ケーブル長は1mほど ちなみに通信時間に余裕が無い為、チェックサムやハンドシェイクなどの機能は、入れられません。 一般的にWindowsでシリアルの高速受信を行うと、データ欠けが発生するのが当たり前なのでしょうか?

  • (H8マイコン)タイマ割込で変更したグローバル変数がメインループ内で認識されない

    H8マイコンの学習をしています。 LEDを一定時間ごとに点滅させるためにタイマ割込を使用して時間稼ぎ処理を行おうとしました。 1ms毎の割込でグローバル変数をインクリメントし、メインループ内でグローバル変数が一定値以上になるまで無限ループする処理を作成しました。 しかし、メインループの数値チェックの無限ループが終了せずLEDが点滅しません。 原因についてお知恵を拝借できないでしょうか。 何卒よろしくお願いいたします。 以下は環境およびコードです。 マイコン:H8/36109(H8/H300 Tinyシリーズ) 使用ツール:HEW4, E8a (main.c) #include "iodefine.h" volatile unsigned int cnt; //グローバル変数 void main(void) {   cnt = 0;   while(cnt < 1000); //ここで無限ループのまま(補足も参照)   IO.PDR2.BIT.B0 = IO.PDR2.BIT.B0; //ここにブレークをかけても引っ掛らない } (intprg.c) #include <machine.h> #include "iodefine.h" extern volatile unsigned int cnt; #pragma section IntPRG  (略) // vector 22 Timer V __interrupt(vect=22) void INT_TimerV(void) {   cnt++; //(補足参照)   TV.TCSRV.BIT.CMFA = 0; //コンペアマッチフラグクリア } (hwsetup.c) void HardwareSetup(void) {   IO.PCR2 = 0xff; //出力ポート      //タイマVの設定   TV.TCRV0.BYTE = 0x4b; /* CMFA有効, コンペアマッチAでクリア, φ/128 = 125kHz */   TV.TCRV1.BYTE = 0x01; /* 外部入力禁止 */   TV.TCORA = 125; /* 1ms */   TV.TCSRV.BYTE = 0x00; /* フラグクリア, 出力禁止 */ } (補足) 割込動作内でブレークをかけるとブレークがかかり、そこからステップ実行するとグローバル変数が変化していることを確認しました。 同様に、メインループの数値チェック無限ループでブレークをかけ、条件を満たすようにグローバル変数を手動で書き換えステップ実行すると無限ループを脱出しました。

    • 締切済み
    • noname#251988
    • C・C++・C#
    • 回答数5
  • (H8マイコン)タイマ割込で変更したグローバル変数がメインループ内で認識されない

    H8マイコンの学習をしています。 LEDを一定時間ごとに点滅させるためにタイマ割込を使用して時間稼ぎ処理を行おうとしました。 1ms毎の割込でグローバル変数をインクリメントし、メインループ内でグローバル変数が一定値以上になるまで無限ループする処理を作成しました。 しかし、メインループの数値チェックの無限ループが終了せずLEDが点滅しません。 原因についてお知恵を拝借できないでしょうか。 何卒よろしくお願いいたします。 以下は環境およびコードです。 マイコン:H8/36109(H8/H300 Tinyシリーズ) 使用ツール:HEW4, E8a (main.c) #include "iodefine.h" volatile unsigned int cnt; //グローバル変数 void main(void) {   cnt = 0;   while(cnt < 1000); //ここで無限ループのまま(補足も参照)   IO.PDR2.BIT.B0 = IO.PDR2.BIT.B0; //ここにブレークをかけても引っ掛らない } (intprg.c) #include <machine.h> #include "iodefine.h" extern volatile unsigned int cnt; #pragma section IntPRG  (略) // vector 22 Timer V __interrupt(vect=22) void INT_TimerV(void) {   cnt++; //(補足参照)   TV.TCSRV.BIT.CMFA = 0; //コンペアマッチフラグクリア } (hwsetup.c) void HardwareSetup(void) {   IO.PCR2 = 0xff; //出力ポート      //タイマVの設定   TV.TCRV0.BYTE = 0x4b; /* CMFA有効, コンペアマッチAでクリア, φ/128 = 125kHz */   TV.TCRV1.BYTE = 0x01; /* 外部入力禁止 */   TV.TCORA = 125; /* 1ms */   TV.TCSRV.BYTE = 0x00; /* フラグクリア, 出力禁止 */ } (補足) 割込動作内でブレークをかけるとブレークがかかり、そこからステップ実行するとグローバル変数が変化していることを確認しました。 同様に、メインループの数値チェック無限ループでブレークをかけ、条件を満たすようにグローバル変数を手動で書き換えステップ実行すると無限ループを脱出しました。

    • 締切済み
    • noname#251988
    • C・C++・C#
    • 回答数5
  • キーボードの日本語デバイス取得について

    パソコンの調子が悪く、リカバリしたとこ、パソコンの不調は治ったものの、キーボードがおかしくなってしまいました。 まず、以前は「カタカナ・ひらがな」ボタンを押すだけで、英字から一発変換できたのに、今は出来なくなってしまいました。 また、キーボード上の「@」を押しても画面に表記されず「ふ」のボタンを押すと出てきたりと、キーボードと画面に表記される文字が噛み合いません。 これは、キーボードのデバイスが「標準PS2」というものになっている事が原因でしょうか? 「デバイスの更新」ボタンを押しても、[日本語 PS/2 キーボード (106/109 キー Ctrl + 英数)]が出てこないのです。 どうしたら、この問題が解決するでしょうか? どうか、解決策を教えて下さい。お願いします。 また、拙い説明で済みません。「ろ」や他にも表記できない言葉があって、上手く表す事が出来ないのです。

  • 同一ネットワーク上のパソコンにpingが通らない

    LAN内に2台のパソコンA・Bがあります。 【パソコンA】  OS:Windows XP SP2  ウィルス対策ソフト:なし(※搭載メモリの関係でインストールできない) 【パソコンB】  OS:Windows XP SP3  ウィルス対策ソフト:ウィルスバスター2010 以前は、AとBはお互いpingが通り、Bの共有フォルダにAはアクセスできていました。 ところが、いつの間にかお互いpingが通らず、マイネットワークで検索しても見つからない状態になってしまいました。 AもBも同じハブ・ルーターを使用してインターネットを参照できます。 共有プリンタも使用できます。 AとB間の参照だけができなくなってしまいました。 思い当たる事と言えば、Aに対して以下の作業をしたことくらいです。  ・インストールされていたノートンアンチウィルス(バージョンは不明)の期限が切れていたため、アンインストール  ・手持ちのウィルスバスター2004をインストール  ・2004はサポート対象外とのことで2009へのアップデート通知を受けるが、メモリ不足でインストールできず  ・ウィルスバスター2004をアンインストール(ウィルス対策ソフトなし状態に) 原因・対策がわからず不便しております。 どなたか解決法をご存知の方、教えてください。

  • シリアル通信のデータ欠けについて

    シリアル通信のデータ欠けについて教えてください。 WindowsXP上でシリアル通信「115200bps、8、None(ODD、EVEN)、1」の設定で、1ms毎に12バイトの送受信を行っているのですが、1分ほど受信すると、データ欠けが発生します。 受信プログラムはこの問題が発覚してから、受信したデータを変数にバッファリングし、保存ボタンを押してから、ログファイルへ保存するシンプルなプログラムを作成し、確認しています。 「切り分けた内容」 1、57600bpsでも発生する 2、VB6、VisualStudio2008 C#で作成したツール及びフリーソフト(SerialDebugger)でも、データ欠けが発生する 3、RS232Cラインモニタ(キャロちゃん)で確認すると、データ欠けは発生していないので、受信側の問題と判断しています。 4、送信間隔を50msと遅くしても発生する 5、RS232C及び、USB変換したものどちらでも発生する 6、9600bpsでは、発生しない(同じデータ数での判断) 7、ケーブル長は1mほど ちなみに通信時間に余裕が無い為、チェックサムやハンドシェイクなどの機能は、入れられません。 一般的にWindowsでシリアルの高速受信を行うと、データ欠けが発生するのが当たり前なのでしょうか?

  • 同一ネットワーク上のパソコンにpingが通らない

    LAN内に2台のパソコンA・Bがあります。 【パソコンA】  OS:Windows XP SP2  ウィルス対策ソフト:なし(※搭載メモリの関係でインストールできない) 【パソコンB】  OS:Windows XP SP3  ウィルス対策ソフト:ウィルスバスター2010 以前は、AとBはお互いpingが通り、Bの共有フォルダにAはアクセスできていました。 ところが、いつの間にかお互いpingが通らず、マイネットワークで検索しても見つからない状態になってしまいました。 AもBも同じハブ・ルーターを使用してインターネットを参照できます。 共有プリンタも使用できます。 AとB間の参照だけができなくなってしまいました。 思い当たる事と言えば、Aに対して以下の作業をしたことくらいです。  ・インストールされていたノートンアンチウィルス(バージョンは不明)の期限が切れていたため、アンインストール  ・手持ちのウィルスバスター2004をインストール  ・2004はサポート対象外とのことで2009へのアップデート通知を受けるが、メモリ不足でインストールできず  ・ウィルスバスター2004をアンインストール(ウィルス対策ソフトなし状態に) 原因・対策がわからず不便しております。 どなたか解決法をご存知の方、教えてください。

  • どうしても上手くいきません…

    #include<stdio.h> #include<stdlib.h> double sumf(int n,double *ds); int main(double){ double a,b; double df=0.7 int n; double *ds; double *z; int size; printf("Input two numbers -> "); scanf("%lf%lf",&a,&b); printf("n"); size = sizeof(*ds)*(1+(int)((b-a)/df)); z = ds = (double*)malloc(size); n = 0; while(a<=b){ *z = a; a += df; printf("%.1f",*z++); n++; } printf("n"); printf("n"); printf("sumf = %.1fn",sumf(n,ds)); return 0; } double sumf(int n,double *ds){ double sum = 0; while(n){ sum += *ds++; n--; } return sum; } 入力された二つの実数a,b(a<b)をもとに、aからbまで0.7ずつ増加する数値の配列を作り、その配列の合計を求める関数sumfを作りなさい。ただし、配列を作る、配列の合計を求める箇所はポインタを使うこと。 【ヒント】 ・プログラムの構成 mainで配列要素の作成、配列の表示、関数sumf呼出し、sumの表示。 関数sumfで配列の合計を求めreturnで合計値を返す。 ・引数の考慮点 実数の配列だけでなく配列の要素数も引数として渡す必要がある。 宜しくお願いします。 どこが違うのでしょうか? 【現時点での実行結果】 ./p243.c Input two numbers -> 2.0 7.0 2.0 2.7 3.4 4.1 4.8 5.5 6.2 6.9 sumf = 16.0 【実行したい結果】 ./p243.c Input two numbers -> 2.0 7.0 2.0 2.7 3.4 4.1 4.8 5.5 6.2 6.9 sumf = 35.6 どこが間違っているのでしょうか? 出来るだけの手直しはしたのですが…

  • 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; }