c言語のサンプルプログラムが欲しいです。
ウェブ上を探したのですが、コンバイルするとエラ―になります。(vc++6.0でコンバイル)
内容としては2進数の1,0をポートに送り
ポートから1,0の信号を画面上で確認するプログラムです。
(文字で無くて良いです)
相手のパソコンからの信号を受け取り
相手に送るだけです。
宜しくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

もしかしたら、なんですが、


そのサンプルを使って何のどういうエラーなのかを
聞いた方が早くないですか?
    • good
    • 0
この回答へのお礼

すばやい回答有難うございます。
参考にさせて頂きます。

お礼日時:2001/12/06 13:18

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Q0x8, スペース, 0x8をプログラムで組むと

『scanfを使わずに_getch()でキーボードからファイル名を入力していき、入力した文字をprintfで表示する流れについて質問です。
表示された文字をバックスペースで消していっても打ち込んだ文字は消えないですよね?
間違ったファイル名を入力してしまった際に文字が残っているので、正しく入力し直しても間違ったファイル名となってします。
一度打った文字を消す方法はありますでしょうか?


以前このような質問をさせていただき、_getch()で得た文字のキーボード上での削除の仕方は分かりました。
今度はそのやり方をプログラムで作るとしたら、どう組んでいけば良いのか教えて頂けないでしょうか。
できればそのプログラムを教えて頂けたら嬉しいです。

今現在書いてるプログラムのgetchを使っている部分です。
ファイルがオープンできたら別の処理に移行しますが、その関数は長くなるので省略しています。

#include <stdio.h>
#include <conio.h>

int main() {

int key;
int i;
char file_name[256] = { 0 };
FILE *fp;
errno_t e;

while(1)
{
i = 0;
// エンタキーが押されるまで入力を続ける
do
{
printf("%c", key);
file_name[i] = key;
key = _getch();
i++;
} while(key != 0x0d);

printf("\n");

if(e = fopen_s(&fp, file_name, "rb") != 0) {
printf("ファイルが存在しません\n");
return 0;
}
else {
// 成功したらプログラムの処理をする関数に移行
return 1;
}
}
}

『scanfを使わずに_getch()でキーボードからファイル名を入力していき、入力した文字をprintfで表示する流れについて質問です。
表示された文字をバックスペースで消していっても打ち込んだ文字は消えないですよね?
間違ったファイル名を入力してしまった際に文字が残っているので、正しく入力し直しても間違ったファイル名となってします。
一度打った文字を消す方法はありますでしょうか?


以前このような質問をさせていただき、_getch()で得た文字のキーボード上での削除の仕方は分かりました。
今度はそ...続きを読む

Aベストアンサー

#include <stdio.h>
#include <conio.h>

int main() {

int key;
int i;
char file_name[256] = { 0 };
FILE *fp;
errno_t e;

while(1)
{
i = 0;
// エンタキーが押されるまで入力を続ける
do
{
key = _getch();
if (key == '\b') { //このif文と次の行のif文を1行にまとめて
if (i) { //if ((key == '\b') && (i)) {にするとバグるので注意
printf("\b \b");
i--;
}
} else if (key != '\r') {
printf("%c", key);
file_name[i] = key;
i++;
}
file_name[i] = '\0';
} while(key != '\r');

printf("\n");

if(e = fopen_s(&fp, file_name, "rb") != 0) {
printf("ファイルが存在しません\n");
return 0;
}
else {
// 成功したらプログラムの処理をする関数に移行
return 1;
}
}
}

#include <stdio.h>
#include <conio.h>

int main() {

int key;
int i;
char file_name[256] = { 0 };
FILE *fp;
errno_t e;

while(1)
{
i = 0;
// エンタキーが押されるまで入力を続ける
do
{
key = _getch();
if (key == '\b') { //このif文と次の行のif文を1行にまとめて
if (i) { //if ((key == '\b') && (i)) {にするとバグるので注意
printf("\b \b");
i--;
}
} else if (key != '\r') {
printf("%c", key);
file_name[i] = key;
i++;
}
file_name[i] = '\0';
} while(key != '\r');

printf("\n");

if...続きを読む

QSendMessage(hW,WM_CREATE,0,0);を

SendMessage(hW,WM_CREATE,0,0);
を実行するとシステムがWM_DOWNやWM_CHARを発行しなくなるみたいです
というのはそれ以降キー入力を無視するようになるのです
いったんアプリをアイコン化してウィンドウ化するとWM_DOWNやWM_CHARを発行するようになります
WM_CREATEを送ってもWM_DOWNやWM_CHARを発行しなくなるのを阻止するために何か方法はないでしょうか?

Aベストアンサー

>プログラムのイニシャライズのために送ったのですが送らないで住むプログラムに変更しました

普通はそんな方法はとりません。
システムが何をするか分からないからです。

自分でメッセージを定義して、初期化処理を行うようするためのメッセージを送るほうが無難です。
WM_CREATEと同じ処理を初期化処理として行わせたいのであれば、初期化処理を関数化して自分で定義したメッセージでも呼び出せばいいのですし。


>作ったプッシュボタンを押してシステムがWM_COMMANDを送ってきた後キー関係のメッセージを送ってくれなくなります

プッシュボタンがキーボードフォーカスを持ってのるでは?

ボタンがキーボードフォーカスを持っていてもキー関連のメッセージを親ウィンドウが受け取りたいのであれば、サブクラス化をするしかないでしょう。

Qdc.TextOut(0 ,0 , *str) ;について

環境 WIN98 VC++6.0 MFC にて

パターンBはOKですが、パターンAだと不正な処理で落ちてしまいます。

どうしてなのかお教えください。

void CFffView::OnPaint()
{
CPaintDC dc(this);
//パターンA
CString* str ;
str = (CString*)("999");
dc.TextOut(0 ,0 , *str) ;

//パターンB
CString aaa ;
aaa = (CString)("999");
dc.TextOut(0 ,0 , aaa) ;
}

Aベストアンサー

両方ダメ。
Aのパターンで動くのは、たまたま。

CString aaa ;
aaa = "999";
dc.TextOut(0 ,0 , aaa) ;

これで十分。

あえてキャストするんだったら、
CString aaa ;
aaa = (LPCSTR)"999";
dc.TextOut(0 ,0 , aaa) ;


aaa=のところでは、ただの代入が行われているわけではありません。
オーバーロードされたオペレータが呼ばれています。


>str = (CString*)m_array.GetAt(i) ;

これは、m_arrayの要素にCString*を入れていて、初めて成り立つ式です。
値をいれているところと、m_arrayの宣言を確認してください。

str = (CString*)("999");
も、
aaa = (CString)("999");
も、リテラル文字列をつっこもうとしています。
リテラル文字列とCStringはまったく別物です。

QWindows上のマウス操作をプログラムで実現したい(C,C++,C#)

Windows上で、マウスで右クリック→ファイル名をコピー→貼り付け

という動作をプログラミングによって実現したいのですが、どのようにしたら良いのでしょう?
やはり、APIを使うと思うのでC#が適しているかと自分では思っているのですが、CでもC++でもかまいません。
どなたかご教授願えますか?よろしくお願いいたします。

Aベストアンサー

★『ファイル名をコピー』の処理を自分のプログラムに組み込んでみるのはどう?
・もう少しだけ詳しい動作の仕組みを補足要求します。
・また『mouse_event』という API 関数は古いので新しい関数『SendInput』を使いましょう。
・ただし、この『SendInput』関数はマウス以外にキーボードのエミュレートも行えるため
 少しだけ複雑な指定になります。慣れれば何てことないが…。→また紹介します。
・まぁ、とにかくもう少し何を行いたいのかを補足して下さい。
・まさか、本当に『右クリック』→『ファイル名をコピー』→『貼り付け』の3ステップを
 行いたいのですか?

参考URL:http://hpcgi1.nifty.com/MADIA/Vcbbs/wwwlng.cgi?print+200412/04120036.txt

Qシリアルポートにデータを送るプログラム

VISUALC初心者です。実際Cも良く分かってないと思います。パソコンにも詳しくないです。
シリアルポートにデータを送るプログラムをVISUALCで作りたいんですが、何をやって良いかさっぱり分かりません。
仕様はダイアログベースで、ボタンを押すと、エディットボックスに書いたファイルパスのファイルのデータをRS232Cに送るということをやりたいのですが、全くもって分かりません。

ファイルの指定の仕方。
および一ビットずつシリアルポートに転送の仕方。
のすべてを教えてください。
以下を参考にしていますが、やっぱり良く分からないというのが現状です。
http://www2.muroran-it.ac.jp/circle/yume/serialport/index.html

Aベストアンサー

#専門家ではなく、「一般人」ですが。。。

補足に書かれたことについてコメントします。

WriteFile()の第2パラメータにハンドルを渡しています。
#エラーにならないのかな???
WriteFile()の前にReadFile()でファイルからデータをメモリ上に読み込んで、
そのアドレスを第2パラメータに渡す必要があると思います。
ファイルデータが固定長ならば予めリードするデータの領域を
確保しといてもいいし、データ長が不定ならGetFileSize()で
得たサイズをアロケートすればいいと思います。
間違ってたらごめんなさい。


人気Q&Aランキング

おすすめ情報