カテゴリー別アーカイブ: C#

[C#]ファイル処理

あるファイルを一行目のみ読み込んで上書きする。つまり2行目以降が消去されたようになる処理。

string Path = @"c:¥...";
StreamReader sr = new StreamReader(Path, Encoding.GetEncoding("SHIFT_JIS"));

String tmpPath = System.IO.Path.GetTempFileName();
System.IO.StreamWriter sw = new System.IO.StreamWriter(tmpPath);

//ReadLineはファイルを一行ずつ読み込む。この場合最初の一行を一時ファイルに書き込んだ
sw.WriteLine(sr.ReadLine());

sr.Close();
sw.Close();

System.IO.File.Copy(tmpPath, Path, true);
System.IO.File.Delete(tmpPath);

[C#]正規表現

//文字列"abc -1,0,1"から数値-1,0,1を配列resに格納
string txt = "abc -1,0,1";
System.Text.RegularExpression.Regex reg = new System.Text.RegularExpression.Regex(@"[,¥+¥-¥d]");
System.Text.RegularExpression.Match m = reg.Match(txt);
string[] res = m.Value.split(',');

//txtに格納された文字列において数値をnに置換する
System.Text.RegularExpressions.Regex.Replace(txt, @"¥d", "n");

正規表現については以下を参照
[vim]正規表現の演習

[C#]オラクルとの接続とSQL実行

using System.Data;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;

using (OracleCommand com = new OracleCommand()){
OracleConnection con = new OracleConnection();
con.ConnectionString = "User id=USERID;Password=PASSWORD;Data Source=DBNAME;";

con.Open();
OracleTransaction tra = con.BeginTransaction(IsolationLevel.ReadCommitted);

try
{
com.CommandText = "insert into TEST values(val1,va2)";
com.Connection = con;
com.Transaction = tra;
com.ExecuteNonQuery();
tra.Commit();
}
catch(System.Exception)
{
tra.Rollback();
throw;
}
finally
{
con.Close();
}
}

[C#]オラクル接続の不一致エラー

visual studioにて

~processorArchitecture=x86″ のプロセッサ アーキテクチャ “x86” の間には不一致がありました。~

ソリューションエクスプローラー
→プロジェクトの右クリック
→ビルド
→プラットフォームのターゲットをANY CPUからx86へ変更

シリアル通信[arduino,C#]

arduinoのLEDをUSBシリアル通信でC#により点灯させる。
USBのCOMポートはデバイスマネージャーとかから確認。
arduino側は’H’の文字を受けると1秒間13ピンをHIGHにする。

[arduino]
const int LED=13;
void setup() {
pinMode(LED,OUTPUT);
Serial.begin(9600);
}

void loop() {
//シリアル通信のバッファに何か入ったら読み込む
if(Serial.available()>0){ //2文字以上の場合は>2とかでforで格納
char c = Serial.read();
if(c == ‘H’){
digitalWrite(LED,HIGH);
delay(1000);
digitalWrite(LED,LOW);
}else if(c == ‘L’){
digitalWrite(LED,LOW);
delay(1000);
}
}
}

[C#]
using System.IO.Ports

SerialPort mySerialPort = new SerialPort(“COM1”);
mySerialPort.BaudRate = 9600;
mySerialPort.Open();
mySerialPort.Write(“H”);
mySerialPort.Close();