問題: サーバーは、SerialPort コマンド (例: "S") をクライアントに送信し、クライアントからポートを受信する必要があります。
例: サーバーは "S" を送信し、クライアントから "N" を受信するため、サーバーは別の "S" を送信する必要があります。!= "N" を受信した場合は、"r01" などを送信します。
クライアントにメッセージを送信できますが、回答を受信して保存/使用することはできません。
私がこれまでに試したこと:
.) 受信した情報を serv.connectedClients[ID].receive に保存します
サーバー: 労働者階級:
public void doSomething(Service serv, string ID)
{
serv.SendMessageToClient(client_name, "S"); //send first message
data = serv.connectedClients[ID].receive.ToString(); //the .receive is empty but should have the clients answer stored
if(data != ""){
serv.SendMessageToClient(client_name, "r01"); //send second message
serv.connectedClients[ID].Information = serv.connectedClients[ID].receive.ToString();
}
}
Service.cs で:
public void getPortMsg(string msg)
{
connectedClients[OperationContext.Current.Channel.SessionId].receive = msg;
}
クライアントで:
void callback_OnMessageReceivedEvent(string message)
{
string portmsg = "";
portmsg = rfid.send(message); //portmsg gets the port.readline info
client.getPortMsg(portmsg); //send portmsg to server
}
そして rfid.send:
public string send(string senden)
{
string data = "";
port.WriteLine(senden);
data = port.ReadLine();
return data;
}
順序: サーバーがクライアントにメッセージを送信します。クライアントはメッセージを受信し、応答を含むサービス メソッドを呼び出します。サーバーはこの回答を使用する必要がありますが、回答を得る前に次のメッセージを送信します。
誰かが答えを知っていることを願っています。