예제 #1
0
        public static string ReadACAreaLabel(IOpcClient client, LCodeSignal signal)
        {
            const int MAX_LEN = 6;
            var       r1      = client.TryReadString(signal.LCode1);
            var       r2      = client.TryReadString(signal.LCode2);

            return(r1.PadLeft(MAX_LEN, '0') + r2.PadLeft(MAX_LEN, '0'));
        }
예제 #2
0
        /// <summary>
        /// 读取完整标签号码。
        /// </summary>
        /// <param name="slot"></param>
        /// <param name="client"></param>
        /// <returns></returns>
        public static string ReadCompleteLable(IOpcClient client, LCodeSignal slot)
        {
            const int MAX_LEN = 6;
            var       lable1  = client.TryReadString(slot.LCode1);
            var       lable2  = client.TryReadString(slot.LCode2);

            return(lable1.PadLeft(MAX_LEN, '0') + lable2.PadLeft(MAX_LEN, '0'));
        }
예제 #3
0
        /// <summary>
        /// slot is param.RobotCarryA or param.RobotCarryB
        /// </summary>
        /// <param name="slot"></param>
        /// <param name="jobname">"A" or "B"</param>
        private static void startJobTask(LCodeSignal slot, string jobname)
        {
            isrun = true;
            while (isrun)
            {
                // 两个任务共用一个client,故要加锁。
                lock (client) {
                    if (client.TryReadBool(slot.Signal))
                    {
                        // 加入机器人布卷队列。
                        var code1    = client.TryReadString(slot.LCode1);
                        var code2    = client.TryReadString(slot.LCode2);
                        var fullcode = LableCode.MakeCode(code1, code2);

                        pushInQueue(fullcode, jobname);

                        client.TryWrite(slot.Signal, false);
                    }
                }
                Thread.Sleep(5000);
            }
        }
예제 #4
0
 public static void WriteACAreaCompletionSignal(IOpcClient client, LCodeSignal signal)
 {
     client.TryWrite(signal.Signal, 0);
 }