C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: PCと三菱シーケンサとの通信にて


(過去ログ 100 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■60143 / inTopicNo.1)  PCと三菱シーケンサとの通信にて
  
□投稿者/ 超初心者 (1回)-(2011/06/21(Tue) 20:58:05)

分類:[VB.NET/VB2005 以降] 

PCと三菱シーケンサを通信させております。
三菱シーケンサで-1(16ビット)に設定しているデバイスをVBにて読み込みたいです。
符号付き16ビットなので、読み込む変数の値をSHORTにすると、オーバーフローになってしまうのですが、どうしてでしょうか?
なお、INTEGERにすると、65536になります。
以上、よろしくお願いします。


引用返信 編集キー/
■60145 / inTopicNo.2)  Re[1]: PCと三菱シーケンサとの通信にて
□投稿者/ επιστημη (2639回)-(2011/06/21(Tue) 21:30:52)
επιστημη さんの Web サイト
> 三菱シーケンサで-1(16ビット)に設定しているデバイスをVBにて読み込みたいです。
> 符号付き16ビットなので、読み込む変数の値をSHORTにすると、オーバーフローになってしまうのですが、どうしてでしょうか?
> なお、INTEGERにすると、65536になります。

どんなコード書いたですか?

Module Module1

    Function getValue() As Short
        Return -1
    End Function

    Sub Main()
        Dim sval As Short
        Dim ival As Integer
        sval = getValue()
        ival = getValue()
        Console.WriteLine(sval)
        Console.WriteLine(ival)
    End Sub

End Module

実行結果:
-1
-1
別に異常ありませんょ?

引用返信 編集キー/
■60146 / inTopicNo.3)  Re[1]: PCと三菱シーケンサとの通信にて
□投稿者/ Azulean (767回)-(2011/06/21(Tue) 22:48:32)
2011/06/21(Tue) 22:50:04 編集(投稿者)

No60143 (超初心者 さん) に返信
> PCと三菱シーケンサを通信させております。

使ったことはないのですが、VB.NET 向けにライブラリか何か提供されているのですか?
それともシリアル通信を使っているのですか?

> 三菱シーケンサで-1(16ビット)に設定しているデバイスをVBにて読み込みたいです。
> 符号付き16ビットなので、読み込む変数の値をSHORTにすると、オーバーフローになってしまうのですが、どうしてでしょうか?
> なお、INTEGERにすると、65536になります。

65536 って本当ですか?そうだとすると、16 ビットじゃありませんよ。
仮に 65535 の間違いだとして、65535 を Short 型の変数に入れようとしていれば範囲外になるのは当然です。
この場合、65535 として取得される経路が問題か、あるいは 65535 を -1 と解釈しなければならないのにそうできていない受け取り側の問題かのいずれかだと思われます。

# ともあれ、一般的な話題ではないので、具体的な原因と対策は情報を得られにくいかもしれませんね。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -