示例#1
0
        public IEnumerable <EngraverPosition> StartEngraving()
        {
            _serialComm.Write(NejeDk8KzConstants.StartCommand);

            while (true)
            {
                var response = _serialComm.ReadOne();

                if (response == NejeDk8KzConstants.EngravingFinishedResponse)
                {
                    //Read machine response is engravingFinished
                    break;
                }

                if (response == NejeDk8KzConstants.PositionUpdatedResponse)
                {
                    //Read machine response is position update

                    byte[] bytes = _serialComm.ReadMany(4);

                    var x = bytes[0] * 100 + bytes[1];
                    var y = bytes[2] * 100 + bytes[3];

                    yield return(new EngraverPosition()
                    {
                        X = x,
                        Y = y
                    });
                }
                else
                {
                    //Read machine response is unexpected response
                    //Unexpected response, abort!
                    break;
                }
            }
        }