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

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

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

Re[3]: CE機とPC間のファイルコピー方法


(過去ログ 144 を表示中)

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

■84593 / inTopicNo.1)  CE機とPC間のファイルコピー方法
  
□投稿者/ kiku (3回)-(2017/07/20(Thu) 11:12:38)

分類:[.NET 全般] 

CE機:WindowsCE5.0
PC:Windows8.1、10
PC側開発環境:Visualstudio2008

・やりたいこと
 PC上のアプリから、CE機上のファイルをPC上に取得する(コピー、削除)。
 PC上のアプリから、PC上のファイルをCE機上の保存する(コピー、削除)。

・実現方法の検討
 実現方法を検討した結果、下記の候補があがりましたが、
 諸所の事情により、3か4を行いたいと思っています。
 1.共有フォルダを利用する方法
 2.FTPを利用する方法
 3.モバイルデバイスセンターを利用する方法
 4.OpenNETCFを利用する方法

・質問1
 上記3と4でやりたいことは実現できるでしょうか?

・質問2
 上記3が実現可能な場合、どのあたりの命令を使えば良いでしょうか?

・質問3
 上記4が実現可能な場合、どのあたりの命令を使えば良いでしょうか?


引用返信 編集キー/
■84595 / inTopicNo.2)  Re[1]: CE機とPC間のファイルコピー方法
□投稿者/ kiku (4回)-(2017/07/20(Thu) 11:47:13)
すみません。大前提が間違えていました。

PCとCE機はUSBで接続されている状態です。

引用返信 編集キー/
■84597 / inTopicNo.3)  Re[1]: CE機とPC間のファイルコピー方法
□投稿者/ 魔界の仮面弁士 (1350回)-(2017/07/20(Thu) 12:34:55)
No84593 (kiku さん) に返信
>  2.FTPを利用する方法
デバイスによっては FTP 機能をサポートしていないこともあるので、
ベンダーに確認が必要かも知れません。


>  3.モバイルデバイスセンターを利用する方法
RAPI (Remote API) ですかね。使ったことは無いですけれども。
https://msdn.microsoft.com/en-us/library/aa513325.aspx


>  4.OpenNETCFを利用する方法
こちらはダウンロードすらした事がないのですが、
OpenNETCF.Desktop.Communication.RAPI クラスに
CopyFileFromDevice / CopyFileToDevic メソッドがあるようです。
https://rapi.codeplex.com/SourceControl/latest#Source/RAPI.cs
引用返信 編集キー/
■84599 / inTopicNo.4)  Re[2]: CE機とPC間のファイルコピー方法
□投稿者/ kiku (5回)-(2017/07/20(Thu) 13:07:32)
魔界の仮面弁士さん

ご回答ありがとうございます。

3も4もAPIは用意されているようですね。
使い方はわかりませんが、
なんとなく使って試してみます。
解決済み
引用返信 編集キー/
■84615 / inTopicNo.5)  Re[3]: CE機とPC間のファイルコピー方法
□投稿者/ kiku (6回)-(2017/07/21(Fri) 11:15:14)
方法4の場合のテストを行い問題なく動作することを確認しました。
そのソースをのせておきます。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using OpenNETCF.Desktop.Communication;

namespace sample1
{
    public partial class Form1 : Form
    {
        RAPI rapi;

        public Form1()
        {
            InitializeComponent();
            rapi = new RAPI();
        }

        private void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
            if (rapi.Connected)
            {
                rapi.Disconnect();
            }
            rapi.Dispose();
            rapi = null;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            var result = rapi.DevicePresent;
            listBox1.Items.Add("DevicePresent=" + result.ToString());
        }

        private void button2_Click(object sender, EventArgs e)
        {
            rapi.Connect();
            listBox1.Items.Add("Connect()実行");
        }

        private void button3_Click(object sender, EventArgs e)
        {
            var result = rapi.Connected;
            listBox1.Items.Add("Connected=" + result.ToString());
        }

        private void button4_Click(object sender, EventArgs e)
        {
            rapi.Disconnect();
            listBox1.Items.Add("Disconnect()実行");
        }

        private void button5_Click(object sender, EventArgs e)
        {
            //connectされていない場合falseを返す
            var result = rapi.DeviceFileExists("/networkconfig.xml");
            listBox1.Items.Add("DeviceFileExists()=" + result.ToString());
        }

        private void button6_Click(object sender, EventArgs e)
        {
            try
            {
                rapi.CopyFileFromDevice(@"C:\networkconfig.xml", "/networkconfig.xml");
                listBox1.Items.Add("CopyFileFromDevice()実行");
            }
            catch (RAPIException ex)
            {
                //connectされていない場合に発生
                //コピー元が存在しない場合に発生
                listBox1.Items.Add("CopyFileFromDevice()例外発生:" + ex.Message + " : " + ex.ToString());
            }
            catch (System.IO.IOException ex)
            {
                //コピー先に既にファイルが存在する場合に発生
                listBox1.Items.Add("CopyFileFromDevice()例外発生:" + ex.Message + " : " + ex.ToString());
            }
        }

        private void button7_Click(object sender, EventArgs e)
        {
            try
            {
                rapi.CopyFileToDevice(@"C:\networkconfig.xml", "/networkconfig2.xml");
                listBox1.Items.Add("CopyFileToDevice()実行");
            }
            catch (RAPIException ex)
            {
                //connectされていない場合に発生
                //コピー先に既にファイルが存在する場合に発生
                listBox1.Items.Add("CopyFileToDevice()例外発生:" + ex.Message + " : " + ex.ToString());
            }
            catch (System.IO.FileNotFoundException ex)
            {
                //コピー元が存在しない場合に発生
                listBox1.Items.Add("CopyFileToDevice()例外発生:" + ex.Message + " : " + ex.ToString());
            }
        }

        private void button8_Click(object sender, EventArgs e)
        {
            try
            {
                rapi.DeleteDeviceFile("/networkconfig2.xml");
                listBox1.Items.Add("DeleteDeviceFile()実行");
            }
            catch (RAPIException ex)
            {
                //connectされていない場合に発生
                //ファイルが存在しない場合に発生
                listBox1.Items.Add("CopyFileToDevice()例外発生:" + ex.Message + " : " + ex.ToString());
            }
        }
    }
}

解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -